关于常量存储位置的问题
来源:4-2 C语言中的常量与变量

GengTeng
2020-06-25
下面的代码打印出来的两个变量的地址是相邻的,
int x = 11;
const int a = 12;
printf("%p, %p\n", &x, &a);
000000000061FE14, 000000000061FE10
并且当我强行修改const变量的值的时候也是可以做到的:
int *b = (int *)&a;
*b = 13;
printf("%d\n", a);
13
所以存储在只读区的应该是字面量(11, 12, 13),常量(a)仍然是在栈区吧?
在windows上使用mingw
写回答
1回答
-
msys2 的编译器可能有些问题或者windows 的机制就是这样的,你定义的const 变量,按说只能用const 指针访问,而且变量的内容不可改变;你可以用Linux 系统试一下;对于地址来说是有点小问题,全局的const 变量放在程序区,局部connst 变量在栈空间。
012020-07-31
相似问题