#include <cstdio> int main() { const int a = 10; int * p = (int *)&a; unsigned long addr = (unsigned long )&a; *p = 0; printf("%d/n", *p);// 0 printf("%d/n", a);// 10 printf("%d/n", *(int*)addr);// 0 return 0; } 可以看出,存储a变量的内存可以被覆写; 但是输出a的时候仍然是初始值,没有变化; 查看汇编代码可知:在使用a的地方,编译器都用的是立即数$10