lionel chang

导航

常数重叠的题目

#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

posted on 2012-10-26 21:48  woshizyl  阅读(146)  评论(0编辑  收藏  举报