gpt4 book ai didi

C++,指向同一位置的两个指针如何保存不同的值

转载 作者:行者123 更新时间:2023-11-30 18:40:03 24 4
gpt4 key购买 nike

有人向我展示了以下代码片段并询问它应该输出什么

#include <iostream>
using namespace std;

int main() {
const int value = 10;
int* p = (int*)&value;
*p = 20;

cout << value << " " << *p << endl
<< &value << " " << p << endl;

return 0;
}

如您所见,有一个常数 value这是10,并且有一个指针p它指向value的地址,那么指向的地址就会得到不同的值。

我希望程序打印 20 20 but it actually prints 10 20 .
它还表明这两个贵重元素具有相同的地址。有人可以解释一下幕后发生了什么吗?

最佳答案

未定义的行为和优化编译器。编译器从 value 的声明中知道value 的值在格式良好的程序中永远不会改变,因此它优化了这些位其中 value 的值将被检查,并仅获取它知道 value 具有的值。

至于地址,您永远不会获取p的地址,并且p&value相同并不奇怪,因为您之前几行就这样分配了它。

关于C++,指向同一位置的两个指针如何保存不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27339362/

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