-1
有人给我看了下面的代码片段,并问是什么事应该输出C++,如何做两个指向同一位置值不同
#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
的指针指向值的地址,然后指向的地址得到一个不同的值。
我预计打印的程序20 20
but it actually prints 10 20
.
它也显示这两个贵重物品有相同的地址。有人可以解释幕后发生了什么吗?
未定义的行为...? – 2014-12-07 03:45:06
@remyabel也许但发生了什么? – qwertymk 2014-12-07 03:45:51
请参阅[如何在同一地址产生2个不同值的变量?](http://stackoverflow.com/q/22656734/1708801)...试图修改一个const对象是未定义的行为这个问题可能是重复的。 – 2014-12-07 03:46:20