-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