gpt4 book ai didi

c++ - 指向常量的指针。指针改变了,但 const 没有改变

转载 作者:太空宇宙 更新时间:2023-11-04 15:01:46 24 4
gpt4 key购买 nike

我有以下代码:

int main(void) {
const int a = 2;
int *p = (int *)&a;
++*p;
cout << a << endl << *p << endl;
cout << &a << endl << p << endl;

return 0;
}

指针指向 const int a 但当我更改 *pointer. *p = 3 a = 2;
而 p 和 a 有相同的地址。
我不知道它是如何产生这个结果的。任何人都可以为我解释。谢谢!

最佳答案

您不能修改常量对象。修改 const 对象(通过非 const 指针)具有未定义的行为。 UB意味着任何事情都可能发生。具有未定义的行为是程序员的错误。

虽然关于 UB 的推理大多毫无意义,但在这种情况下,观察到的行为可能是由于 constant folding 引起的

关于c++ - 指向常量的指针。指针改变了,但 const 没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34767121/

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