我想了解const在C++中。 我寫這下面的代碼片段:我通過訪問內存位置來更改const變量的值。爲什麼它不起作用?
const int x=5;
int *ptr;
ptr=(int*)&x;
cout<<"address of x="<<&x<<endl;
cout<<"value of ptr="<<ptr<<endl;
*ptr=11;
cout<<"*ptr="<<*ptr<<endl;
cout<<"x="<<x;
輸出是
address of x=0x28fef8
address of ptr=0x28fef8
*ptr=11
x=5
由於PTR指向X,我相信在* PTR的價值和X都將是相同。 爲什麼數值不同? 我明白x是常量,但是,我做* PTR改變在內存地址的值。 請告訴我我錯過了什麼。
修改'const'變量的值會導致未定義的行爲。 – CoryKramer 2014-12-02 20:14:11
@Cyber即使我們修改其地址的值?爲什麼這樣? – SeasonalShot 2014-12-02 20:16:11
因爲你騙了編譯器。你告訴它'x'永遠不會改變,所以它可能會根據這個假設做出假設。 – 2014-12-02 20:17:29