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;
}