在 C++ 中修改 const int [重复]

2024-01-27

运行下面的代码显示&x=ptr,那么为什么x和*ptr不相等呢?

const int x=10;
int* ptr =(int*) &x;
*ptr = (*ptr)+1;

cout << &x << " " << x << "  " << ptr <<"  " <<*ptr;  //output : 0012FF60 10  0012FF60  11

仅当您遵守规则时,才需要 C++ 实现来使程序正常运行。你违反了规则。 C++ 实现的行为可能是这样的:

  • Because x被宣布const,C++ 实现知道只要遵守规则,它的值就不会改变。所以,无论在哪里x使用时,C++ 实现使用 10 而不费心检查是否x已经改变。
  • Because *ptr指向一个非常数int,实际执行对它的存储和读取。这些“起作用”是因为它指向的内存(其中x表示)实际上并未被操作系统标记为只读。因此,尽管您不应该这样做,但您仍然可以进行修改。

观察 C++ 实现的行为是否有效如果你遵守规则。如果你没有修改过x,然后用 10 表示x无论它出现在哪里都会正常工作。或者,如果您没有声明x to be const,那么 C++ 实现就不会假设它总是 10,因此每当x被访问。这就是 C++ 标准对实现的全部要求:如果遵循规则,它就会起作用。

如果不遵守规则,C++ 实现可能会以看似不一致的方式出现故障。

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

在 C++ 中修改 const int [重复] 的相关文章

  • 更新面板工作速度非常慢

    我正在编写一个用户可以注册的应用程序 注册时 可以选择多个选项 并根据这些注册字段可见或不可见以及是否必需 我想出了一个想法 所有字段都将位于 updatePanel 中 当用户更改注册选项时 我将在服务器端设置这些字段的可见性 它可以工作
  • 如何在 VC++ CString 中验证有效的整数和浮点数

    有人可以告诉我一种有效的方法来验证 CString 对象中存在的数字是有效整数还是浮点数吗 Use tcstol http msdn microsoft com en us library w4z2wdyc aspx and tcstod
  • 在 HKCR 中创建新密钥有效,但不起作用

    我有以下代码 它返回 成功 但使用两种不同的工具使用搜索字符串 3BDAAC43 E734 11D5 93AF 00105A990292 搜索注册表不会产生任何结果 RegistryKey RK Registry ClassesRoot C
  • C# 方法重载决策不选择具体的泛型覆盖

    这个完整的 C 程序说明了这个问题 public abstract class Executor
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • extern 声明和函数定义都在同一文件中

    我只是浏览了一下gcc源文件 在gcc c 我发现了类似的东西 extern int main int char int main int argc char argv 现在我的疑问是extern是告诉编译器特定的函数不在这个文件中 但可以
  • 处理右值时的 insert 与 emplace

    std string myString std unordered set
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • Eigen 和 OpenMP:由于错误共享和线程开销而没有并行化

    系统规格 Intel Xeon E7 v3 处理器 4 插槽 16 核 插槽 2 线程 核心 Eigen 系列和 C 的使用 以下是代码片段的串行实现 Eigen VectorXd get Row const int j const int
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 是否使用 C# 数据集? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 C 中的数据集概念有点困惑 编码 ASP NET 站点 但这并不重要 在我的阅读中 我了解到它们 本质上 用作我的应用程序和我的
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • EntityFramework 6.0.0.0 读取数据,但不插入

    我创建了一个基于服务的数据库 folderName gt Add New Item gt Data gt Service based Database文件到 WPF 应用程序中 然后我用过Database First方法并创建了Person
  • 如何在 sql azure 上运行 aspnet_regsql? [复制]

    这个问题在这里已经有答案了 可能的重复 将 ASP NET 成员资格数据库迁移到 SQL Azure https stackoverflow com questions 10140774 migrating asp net membersh
  • 为什么空循环使用如此多的处理器时间?

    如果我的代码中有一个空的 while 循环 例如 while true 它将把处理器的使用率提高到大约 25 但是 如果我执行以下操作 while true Sleep 1 它只会使用大约1 那么这是为什么呢 更新 感谢所有精彩的回复 但我
  • 如何在 C 中将 char 连接到 char* ?

    我怎样才能前置char c to char myChar 我有c值为 A and myChar值为 LL 我怎样才能前置c to myChar使 ALL 这应该有效 include

随机推荐

  • VS 安装项目:安装时卸载其他组件

    我正在创建一个 Visual Studio 安装项目 我想从安装我的组件时从系统中卸载另一个组件 另一个组件是从我自己使用 Visual Studio 创建的设置安装的 目前 当我从组件的安装操作中调用另一个组件的卸载时 我收到错误代码 1
  • 为什么带有 pop 方法(或 del 语句)的 for 循环不迭代所有列表元素[重复]

    这个问题在这里已经有答案了 我是 Python 新手 正在尝试使用列表 我在 linux2 上使用 Python 3 2 3 默认 2012 年 10 月 19 日 20 13 42 GCC 4 6 3 这是我的示例代码 gt gt gt
  • 确保 C# 中静态方法的线程安全

    我目前在静态类 方法中有一些代码 但我想检查它是否是线程安全的 从我读到的内容来看 我认为这应该没问题 但我内心深处的某些想法告诉我 这可能不是 我的网页的数据处理阶段使用外部 Web 服务来创建订单记录 这可能会非常慢 可能需要 30 4
  • AngularJS TypeScript 指令链接函数

    我正在尝试使用 TypeScript 创建 AngularJS 指令 我的指令需要 ngModel 并且我还使用在指令中注入的自定义服务 我的主要问题是我的服务无法在链接功能中使用 这是我想要实现的目标的示例 module app dire
  • 当启用 wifi 并且 WifiManager.EXTRA_WIFI_STATE 不可用时,android.net.wifi.STATE_CHANGE 不会广播

    显现
  • 在swift中下载并解析json

    我正在尝试从网站获取 JSON 并解析它 然后再将其放入 iOS 视图中 这是我的代码 func startConnection let urlPath String http binaenaleyh net dusor var url N
  • C# WebClient 非英文请求标头值编码

    我想将一些自定义标头添加到网络请求的标头中 我通过 WebClient Headers Add Header Value 方法来执行此操作 ASCII 字符没有问题 但非 ASCII 字符有问题 是否可以改变 标头编码值 None
  • xtable 用于条件单元格格式表的显着 p 值

    我正在使用 xtable 生成要放入 Latex 中的表格 并且想知道是否有一种方法可以对单元格进行条件格式设置 以便所有重要的 p 值都呈灰色 我在 TexShop 中使用 Knit 这是一个使用的示例diamondsggplot2 中的
  • 在 iPhone 上向屏幕外的 FBO 写入然后读取;在模拟器上有效但在设备上无效?

    我正在尝试在 iPhone 上进行一些图像处理 基于 Apple 的 GLImageProcessing 示例 最终我想做的是将图像加载到纹理中 执行示例代码中的一项或多项操作 色调 饱和度 亮度等 然后读回生成的图像以供以后处理 保存 在
  • Spring测试@ContextConfiguration和静态上下文

    我的抽象测试类有以下代码 我知道XmlBeanFactory with ClassPathResource已弃用 但这不太可能是问题所在 RunWith SpringJUnit4ClassRunner class ContextConfig
  • 如何使用 pyplot 使一个轴占据多个子图

    我想在一个图中包含三个图 该图应具有二乘二的子图布局 其中第一个图应占据前两个子图单元格 即整个第一行图单元格 其他图应位于单元格 3 和 4 中第一个图的下方 我知道 MATLAB 通过使用subplot像这样命令 subplot 2 2
  • 从 TIFF 文件中提取 JPEG

    背景我有一个大的 TIFF 文件 它是用 JPEG 压缩的 TIFF 标准中的新压缩率为 7 并且是平铺的 我需要做的是将这些图块提取到单独的 jpg 文件中 我需要能够在不解压缩 重新压缩图像数据的情况下完成此操作 因为这将需要太多的计算
  • 找不到有效的 GoogleService-info.plist

    FIRApp configure FirebaseApp configure in Swift could not find a valid GoogleService Info plist in your project Please d
  • Java Guava Multimap和Cache的结合

    有没有番石榴的组合之类的东西Cache and Multimap功能可用吗 本质上 我需要一个集合 其中条目在给定时间后过期 例如Cache但我有非唯一的密钥 并且我需要条目独立过期 我认为路易斯 沃瑟曼在上面的评论之一中提供了答案 即没有
  • 如何在CSS中修剪图像?

    好的 问题是 我的应用程序允许用户插入任何图像 由他们决定插入很大或很长的图像 但是当我租用图像时我想要width 50px and height 100px 好吧 如果我这样做的话 myImage width 50px height 10
  • 更改 GKE 上 LoadBalancer 的 IP 地址

    我想更改 Google Cloud 中 LoadBalancer ingress nginx controller 的 IP 地址 我现在已经通过 LoadBalancer 分配了 IP 地址 请参阅屏幕截图 不幸的是 它没有在 GKE 中
  • bash 从函数内部退出脚本

    在某些情况下 您希望从函数内部终止脚本 function die if fatal fatal
  • Javascript - 使用 iframe-in 值填充输入

    我想用我的 iframe in 值填充输入 我有两个html文件 1 html 和 2 html第一个 1 html 是这样的
  • 确定给定名称的类是否存在

    这可能是一个愚蠢的问题 但我四处搜寻却一无所获 我有一个代码 class A let className A 我需要检查是否className对应于现有的类 这一切都不在全局范围内 并且在 node js 中运行 所以我无法使用window
  • 在 C++ 中修改 const int [重复]

    这个问题在这里已经有答案了 运行下面的代码显示 x ptr 那么为什么x和 ptr不相等呢 const int x 10 int ptr int x ptr ptr 1 cout lt lt x lt lt lt lt x lt lt lt