#include<iostream>
using namespace std;
int a=0;
void test(int [])
{
static int a;
a=10;
}
int main()
{
const int a=2;
const int *aP=&a;
cout<<"before :a="<<a<<endl;
int *p=const_cast<int *>(aP);
*p=10;
cout<<"after:a="<<a<<"\t *p="<<*p<<endl;
cout<<"p="<<p<<"\t a's address is:"<<&a<<endl;
cout<<&(*p)<<endl;
return 0;
}
运行结果:
分析:声明 const int a = 2; 并不会分配内存空间,而是告诉编译器遇到a就用2来代替。
当你对a使用地址符&时,内存才给它分配内存。但对a本身的调用没有影响,才导致你说的那种情况
参考:
http://topic.csdn.net/u/20090827/15/c493e0ce-9c63-42e2-aac4-e7cf7222a75e.html