const 修饰的全局变量,初始化则存放在data区,未初始化放在bss区
不可以直接修改;用指针的方式间接修改,编译不出错但是运行会出错
const修饰的局部变量, 放在栈上
不可以直接修改;用指针的方式间接修改,编译不出错但是运行也不出错
用指针间接修改的方式可以改变const修饰的局部变量
#include <stdio.h>
const int a = 10;
//void test01()
//{
// //a = 100; //编译器报错,不允许直接修改
// int *p = &a;
// *p = 20;
// printf("%d\n", *p); //编译不出错,运行出错,这里a放在data区,不允许被修改
//}
void test02()
{
const int b = 10;
//b = 20; //编译器报错,不允许直接修改
int *p = &b;
*p = 20;
printf("%d\n", b); //这里编译运行都可以通过,const常量是个冒牌货
}
int main(void)
{
//test01();
test02();
system("pause");
return 0;
}