此贴已经发在论坛:http://topic.csdn.net/u/20100317/21/2b54bb55-7542-46d8-9592-04758e63ae46.html
大家运行下这段程序,看看结果。
我调试了下,变量 i 是在栈内分配了存贮区的,并且p确实指向了i的存储区。
但为什么*p的值都改变了,i的值却没变。 i 值究竟后来存在哪里了?
#include <iostream>
using namespace std;
int main(){
const int i=48;
int* p;
p= (int*)(&i);
*p=255;
cout << "i:/t" << "addr:/t"<<&i<<"/t"<<i << endl
<< "*p:/t"<< "addr:/t"<<p <<"/t"<<*p << endl;
return 0;
}
最后我觉得“常量折叠”这个答案比较符合。大家看呢?(参考地址已经写在顶端)