首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求解疑惑,关于Const值尝试修改的有关问题

2012-09-02 
求解疑惑,关于Const值尝试修改的问题C/C++ codeconst int ival100int *ptrconst_castint *(&ival)co

求解疑惑,关于Const值尝试修改的问题

C/C++ code
    const int ival=100;    int *ptr=const_cast<int *>(&ival);    cout<<*ptr<<endl;    *ptr=99;    cout<<"*ptr:"<<*ptr<<endl;    cout<<"ival:"<<ival<<endl;    cout<<"ival Address:"<<&ival<<endl;    cout<<"*ptr Address:"<<ptr<<endl;

为毛我修改了值了以后,发现ival还是没有修改,可是内存地址都是映射到一块上呢?


[解决办法]
尝试修改const 变量的行为未定义.

你可以再发帖解惑什么是未定义行为 .
[解决办法]
那是编译器的问题,调试查看内存里面内容有没有改变就知道了
[解决办法]
可以参看这个帖子
http://bbs.51cto.com/thread-926860-1.html
[解决办法]
我也问过这个问题

“常量展开”
[解决办法]
当然,你可以写个函数
C/C++ code
void print(int const * ptr){   cout << *ptr << endl;}
[解决办法]
百度一下“常量折叠”
[解决办法]
定义了一个 const int ival=100;是一个常量,
但是int *ptr=const_cast<int *>(&ival);你取到的地址由编译器给你换了一个值与ival相同的另一个“副本ival”,也就是说,你还是没有取到常量的地址。不知道我说明白了吗

热点排行