知识来源主要是陈正冲老师的《C语言深度解剖》及Delphi Tang老师的《C语言剖析》,有兴趣的朋友可以看我置顶文章获取
const
修饰的变量是只读的,本质还是变量
修饰的局部变量在栈上分配空间
修饰的全局变量在全局数据区分配空间
只在编译器有用,在运行期无用
在现代的C语言编译器里面,修改const全局变量会导致程序崩溃
注意:标准C语言编译器不会将const修饰的全局变量存储于只读存储区中,而是存储与可以修改的全局数据区,其值依然可以改变
实验1:const的变量本质
#include
const int g_cc = 2;
int main()
{
const int cc = 1;
int* p = (int*)&cc;
printf("cc = %d\n", cc);
*p = 3;
printf("cc = %d\n", cc);
p = (int*)&g_cc;
printf("g_cc = %d\n", g_cc);