求解疑惑,关于Const值尝试修改的问题
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;
void print(int const * ptr){ cout << *ptr << endl;}
[解决办法]
百度一下“常量折叠”
[解决办法]
定义了一个 const int ival=100;是一个常量,
但是int *ptr=const_cast<int *>(&ival);你取到的地址由编译器给你换了一个值与ival相同的另一个“副本ival”,也就是说,你还是没有取到常量的地址。不知道我说明白了吗