关于Const
两个代码段,分别如下:
//程序段1
main()
{
const int i = 0;
int *p;
p = (int *)&i;//C和C++编译运行 都没有问题(C++ 没有(int *)是err C没有是warning )
*p = 100;
cout<<i<<endl;//i == 0
cout<<*p<<endl;//*p == 100
cout<<&i<<endl;
cout<<p<<endl;//p == &i;
}
//程序段2
const int i = 0;
main()
{
int *p;
p = (int *)&i;
*p = 100;
}
编译都可以, 运行就segmentfault
请问为什么p指向i的地址,*p = 100;却没有改变i的值?
程序段2改变i的作用域为什么会导致运行错误?