什么是顶级 const 限定符?

2023-11-23

什么是constC++ 中的“顶级”限定符是什么意思?

那么其他级别是什么?

例如:

int const *i;
int *const i;
int const *const i;

顶级 const 限定符影响对象本身。其他的都只是 与指针和参考文献相关。他们不制造物体 const,并且仅防止使用指针或通过路径进行修改 参考。因此:

char x;
char const* p = &x;

这不是顶级常量,并且没有一个对象是不可变的。 表达方式*p不能用来修改x,但还有其他表达方式 可;x不是 const。对于这个问题

*const_cast<char*>( p ) = 't'

是合法且明确定义的。

But

char const x = 't';
char const* p = &x;

这次,有一个顶级常量x, so x是不可变的。不 表达式可以改变它(即使const_cast用来)。这 编译器可能会放x在只读存储器中,并且可以假设 的价值x无论其他代码会做什么,都不会改变。

给指针顶级const,你会写:

char x = 't';
char *const p = &x;

在这种情况下,p将指向x永远;任何改变这一点的尝试 是未定义的行为(编译器可能会将p在只读存储器中, 或者假设*p指的是x,无论任何其他代码)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是顶级 const 限定符? 的相关文章

  • 是否有与 posix_memalign 对应的 C++ 版本?

    当我打电话时posix memalign http man7 org linux man pages man3 posix memalign 3 html为类型的对象分配对齐的内存Foo在我的 C 代码中 我需要做一个reinterpret
  • CLR 2.0 与 4.0 性能比较?

    如果在 CLR 4 0 下运行 为 CLR 2 0 编译的 NET 程序会运行得更快吗 应用程序配置
  • 适合初学者的良好调试器教程[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有谁知道一个好的初学者教程 在 C 中使用调试器 我感觉自己好像错过了很多 我知道怎么做 单步执行代码并查看局部变量 虽然这常常给我带来问
  • 如何在多线程C++ 17程序中交换两个指针?

    我有两个指针 pA 和 pB 它们指向两个大的哈希映射对象 当pB指向的哈希图完全更新后 我想交换pB和pA 在C 17中 如何快速且线程安全地交换它们 原子 我是 c 17 的新手 2个指针的原子无等待交换可以通过以下方式实现 inclu
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 如何使用 Castle Windsor 将对象注入到 WCF IErrorHandler 实现中?

    我正在使用 WCF 开发一组服务 该应用程序正在使用 Castle Windsor 进行依赖注入 我添加了一个IErrorHandler通过属性添加到服务的实现 到目前为止一切正常 这IErrorHandler对象 一个名为FaultHan
  • 为什么在 WebApi 上下文中在 using 块中使用 HttpClient 是错误的?

    那么 问题是为什么在 using 块中使用 HttpClient 是错误的 但在 WebApi 上下文中呢 我一直在读这篇文章不要阻止异步代码 https blog stephencleary com 2012 07 dont block
  • Visual Studio 在构建后显示假错误

    我使用的是 Visual Studio 2017 构建后 sln在调试模式下 我收到错误 但是 当我通过双击错误列表选项卡中的错误来访问错误时 错误会从页面中消失 并且错误数量也会减少 我不太确定这种行为以及为什么会发生这种情况 有超过 2
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 在Linux中,找不到框架“.NETFramework,Version=v4.5”的参考程序集

    我已经设置了 Visual studio 来在我的 Ubuntu 机器上编译 C 代码 我将工作区 我的代码加载到 VS 我可以看到以下错误 The reference assemblies for framework NETFramewo
  • 识别 Visual Studio 中的重载运算符 (c++)

    有没有办法使用 Visual Studio 快速直观地识别 C 中的重载运算符 在我看来 C 中的一大问题是不知道您正在使用的运算符是否已重载 Visual Studio 或某些第三方工具中是否有某些功能可以自动突出显示重载运算符或对重载运
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • 如何在 C 中安全地声明 16 位字符串文字?

    我知道已经有一个标准方法 前缀为L wchar t test literal L Test 问题是wchar t不保证是16位 但是对于我的项目 我需要16位wchar t 我还想避免通过的要求 fshort wchar 那么 C 不是 C
  • 为什么这个二维指针表示法有效,而另一个则无效[重复]

    这个问题在这里已经有答案了 这里我编写了一段代码来打印 3x3 矩阵的对角线值之和 这里我必须将矩阵传递给函数 矩阵被传递给指针数组 代码可以工作 但问题是我必须编写参数的方式如下 int mat 3 以下导致程序崩溃 int mat 3
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • C++ 中的双精度型数字

    尽管内部表示有 17 位 但 IEE754 64 位 浮点应该正确表示 15 位有效数字 有没有办法强制第 16 位和第 17 位为零 Ref http msdn microsoft com en us library system dou
  • C++ new * char 不为空

    我有一个问题 我在 ASIO 中开发服务器 数据包采用尖头字符 当我创建新字符时 例如char buffer new char 128 我必须手动将其清理为空 By for int i 0 i lt 128 i buffer i 0x00
  • 使用 C 在 OS X 中获取其他进程的 argv

    我想获得其他进程的argv 例如ps 我使用的是在 Intel 或 PowerPC 上运行的 Mac OS X 10 4 11 首先 我阅读了 ps 和 man kvm 的代码 然后编写了一些 C 代码 include
  • 为boost python编译的.so找不到模块

    我正在尝试将 C 代码包装到 python 中 只需一个类即可导出两个函数 我编译为map so 当我尝试时import map得到像噪音一样的错误 Traceback most recent call last File
  • 灵气序列解析问题

    我在使用 Spirit Qi 2 4 编写解析器时遇到一些问题 我有一系列键值对以以下格式解析

随机推荐

  • AES 256 加密:公钥和私钥我如何生成和使用它.net [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 关于 AES 256 加密 什么是公钥和私钥 我怎样才能生成这两个密钥 如何使用公开来加密数据 如何使用私有来解密数据 在 Net 中 您可以像这样创建密钥对 public st
  • 在 Perl 中应用编码标准有什么好的自动化框架吗?

    我所知道的一个是Perl 评论家 到目前为止 我的多次尝试都没有结果 这里有人有什么建议吗 任何根据我们的编码标准配置 Perl Critic 并在代码库上运行它的资源将不胜感激 在设置个人资料方面 您尝试过吗perlcritic prof
  • 使用另一个 2D 数组索引 NumPy 2D 数组

    我有类似的东西 m array 1 2 4 5 7 8 6 2 and select array 0 1 0 0 我的目标是 result array 1 5 7 6 I tried ix正如我读到的简化行和列提取 numpy 但这并没有得
  • JavaScript 中有 URL 类吗?

    在 JavaScript 中 是否有任何等效的类 iOS SDK 中的 NSURL 类或 Java 中的 URL 类 通过这样的课程 我想 规范化 URL 从方案 主机 路径组件等组成 URL 以及 将 URL 分解为其元素 詹姆斯 帕多尔
  • 如何循环遍历 TextReader 中的行?

    如何循环遍历 a 中的行文本阅读器 source I tried foreach var line in source 但出现错误 foreach 语句无法对 System IO TextReader 类型的变量进行操作 因为 System
  • 使用 R 将类“tbl_df”、“tbl”和“data.frame”转换为数据帧

    我得到这个数据 gt str gaDataExt Classes tbl df tbl and data frame 2 obs of 5 variables date POSIXct format 2016 05 24 2016 05 3
  • Android 中的光标是否从 0 或 1 引用列?

    我正在使用 SQLite 数据库 并且成功返回游标 但我想知道游标引用的是像数组一样以 0 开头的列还是仅引用 1 开头的列 Android 中 SQLite 数据库中的游标引用从 0 开始的列
  • 根据类的当前实现,通过直接枚举 ConcurrentDictionary 将 ConcurrentDictionary 复制到普通 Dictionary 是否安全?

    TL DR 是否可以单独枚举一个ConcurrentDictionary 发出相同的密钥两次 是否目前的实施 of the ConcurrentDictionary类 NET 5 允许这种可能性吗 我有一个ConcurrentDiction
  • 如何在Python Requests库中实现重试机制?

    我想为Python添加重试机制Requests库 因此使用它的脚本将重试非致命错误 目前我确实认为三种错误是可以恢复的 HTTP 返回代码 502 503 504 找不到主机 现在不太重要 请求超时 在第一阶段 我确实想每分钟重试指定的 5
  • Avro Schema 激发 StructType

    这实际上与我的相同上一个问题 但使用 Avro 而不是 JSON 作为数据格式 我正在使用 Spark 数据框 它可以从几个不同的架构版本之一加载数据 Version One namespace com example avro type
  • 安装没有 package.json 文件的 Cordova 插件

    我正在尝试使用 Cordova CLI 7 安装 Cordova 插件 该插件没有 package json 文件 因此将其添加到我的项目时会抛出错误 我尝试使用plugman 转换config xml 文件 它在 Android 上运行良
  • Okhttp 检查文件大小而不下载文件

    okhttp常见的例子涵盖了get和post的场景 但我需要获取带有 url 的文件的文件大小 因为我需要通知用户 并且只有在获得他们的批准后才能下载文件 目前我正在使用这段代码 URL url new URL http server co
  • Netty Channel.write 不写入消息

    我正在尝试使用 Netty 迈出第一步 为此我在 Netty 上编写了简单的服务器 在 oio plain TCP 上编写了简单的客户端 客户端发送随机文本数据包 并且必须收到 Ack 消息 查看处理程序方法 Override public
  • 在调用 save() 之前必须手动分配此类的 ids

    我的休眠有一些问题 OneToMany映射 就像这里一样 Entity Table name albums SequenceGenerator name ALBUMS SEQ sequenceName albums seq allocati
  • 将 Python 内置类型替换为自定义类型

    是否可以用自定义类型替换一些内置的 python 类型 我想创建类似的东西 class MyInt object builtin int MyInt x 5 您似乎在问是否可以覆盖输入时创建的类型literals 答案是不 你不能做到这样x
  • Android 应用程序仅为一项活动启用 NFC

    对于支持 NFC 的应用程序 是否可以仅针对 Android 中的一项活动启用 NFC 我读过这个 仅从特定活动中读取 NFC 标签 但设备仍在扫描应用程序所有活动的标签 EDIT
  • 将指标从 telegraf 发送到 prometheus

    我在跑prometheus and telegraf在同一主机上 我正在使用一些输入插件 输入 cpu 输入 ntpq 我已经配置为prometheus client输出插件将数据发送到prometheus 这是我的配置 outputs p
  • 带有按名称调用参数的函数文字

    如何在 scala 中定义带有按名称调用参数的匿名函数 我尝试了以下方法 val fun x Boolean y gt Int gt if x y else 0 这适用于按值调用 y 但不适用于按名称调用 为什么 这是可以做到的 但方式略有
  • 静态、常量和只读字段的内存分配在哪里?

    我已经在程序中使用了这三个字段 并得到了用法上的差异 但我有点困惑这些字段存储在哪里 是在数据段 堆栈还是堆 还是代码段 static int a const int b 1235 readonly int c 在ILDASM中字段描述如下
  • 什么是顶级 const 限定符?

    什么是constC 中的 顶级 限定符是什么意思 那么其他级别是什么 例如 int const i int const i int const const i 顶级 const 限定符影响对象本身 其他的都只是 与指针和参考文献相关 他们不