#include<iostream>int main(){ const int a = 10; int *p = NULL; p = (int *)&a; *p =11; printf("a=%d",a); return 0;}在C語言里面 可以通過 指針來間接修改a得值 在C++里面 卻不行在C++里面 這個(gè)常量放在 什么位置 為什么不能通過地址不能修改a的值
3 回答

守著星空守著你
TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
你好,你的代碼我測試了。你說的情況確實(shí)存在。就我的理解,C++比C更加嚴(yán)格,const所修飾的變量是不允許修改的。
const int x; /* uninitialized const compiles in C but fails in C++*/
就上面一句代碼,在C中是可以通過的,但是在C++中是不可以的。
在C++里面,你可以使用一個(gè)指針指向一個(gè)常量,但是不能修改常量的值。

不負(fù)相思意
TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
C++里面const 常量是放在符號表里面的。你用指針改的話編譯器會為這個(gè)常量分配一次地址 你改這個(gè)地址的內(nèi)容 跟常量沒有關(guān)系,然后我問他符號表在內(nèi)存的什么位置? 他說符號表 是編譯器處理的,他沒做過編譯器,所以他不知道放在什么地方。 over
- 3 回答
- 0 關(guān)注
- 924 瀏覽
添加回答
舉報(bào)
0/150
提交
取消