gpt4 book ai didi

c++ - 在 C++ 中修改 const int

转载 作者:行者123 更新时间:2023-11-30 16:51:54 24 4
gpt4 key购买 nike

运行下面的代码显示&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++ 实现的行为可能是这样的:

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

请注意,如果您遵守规则,C++ 实现的行为就会起作用。如果您遵守规则。如果您没有修改 x,那么在 x 出现的任何地方使用 10 都会正常工作。或者,如果您没有将 x 声明为 const,那么 C++ 实现就不会假设它始终为 10,因此每当 时它都会获取更改后的值>x 已被访问。这就是 C++ 标准对实现的全部要求:如果遵循规则,它就会起作用。

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

关于c++ - 在 C++ 中修改 const int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41512586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com