#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++里面 这个常量放在 什么位置 为什么不能通过地址不能修改a的值
3 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
你好,你的代码我测试了。你说的情况确实存在。就我的理解,C++比C更加严格,const所修饰的变量是不允许修改的。
const int x; /* uninitialized const compiles in C but fails in C++*/
就上面一句代码,在C中是可以通过的,但是在C++中是不可以的。
在C++里面,你可以使用一个指针指向一个常量,但是不能修改常量的值。
不负相思意
TA贡献1777条经验 获得超10个赞
C++里面const 常量是放在符号表里面的。你用指针改的话编译器会为这个常量分配一次地址 你改这个地址的内容 跟常量没有关系,然后我问他符号表在内存的什么位置? 他说符号表 是编译器处理的,他没做过编译器,所以他不知道放在什么地方。 over
- 3 回答
- 0 关注
- 880 浏览
添加回答
举报
0/150
提交
取消