C++深度解析 进化后的const分析(2)
C语言中的const变量
C语言中的const变量是只读变量,其本质还是变量,会在栈上分配空间。(通过枚举enum定义真正的常量)
由于const局部变量会存放在栈里,而const全局变量会存在只读存储内存上。
所以我们可以通过指针来修改const局部变量,但是修改const全局变量,会使程序崩溃
示例程序一:(用gcc编译器编译)
下面程序中c不是真正意义上的常量,而是只读变量,可以通过指针来修改const局部变量。
//*.c文件
#include <stdio.h>
int main()
{
const int c = 0; //得到的不是真正意义上的常量,而是只读变量
int* p = (int *)&c; //通过指针修改const变量
*p = 5;
printf("c = %d\n", c);
printf("*p = %d\n", *p);
return 0;
}
结果如下: