const全局变量在静态区,直接或间接都不可以修改
const局部变量在栈上,可以间接修改
但是定义为const的变量不建议修改
//const全局变量
const int g_c = 20;
void test()
{
//不能直接修改
//g_c = 10;
//不能间接修改
//int *p =(int*) &g_c;
//*p = 100;//引发了异常: 写入访问权限冲突。p 是 0x2CFB70。
//const局部变量
const int d = 20;
//不能直接修改
//d = 100;
int *pd = (int*)&d;
*pd = 100;
//看起来间接修改也失败了,但是网上说栈上的变量只要拿到地址就可以修改,可以修改成功,可能是编译器版本或者C语言与C++的差距?
cout << "d=" << d << endl;//20
cout << "*pd=" << *pd << endl;//100
cout << "&d=" << &d << endl;//=0057FA64
cout << "pd=" << pd << endl;//=0057FA64
}