常数重叠的题目
#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