一个关于const的问题,同几个地址,加不加const居然不一样?!!
在DEV-CPP上运行如下代码,感到结果非常不可思议,请高手指教
#include <iostream>
using namespace std;
int main()
{
const int ten=10;
int *p;
p=(int *)&ten;
(*p)++;
cout<<ten<<endl; //ten is 10
cout<<&ten<<endl; //&ten is 0x22ff74
cout<<p<<endl; //p is 0x22ff74
cout<<*p<<endl; //*p is 11
cout<<*(&ten)<<endl; //*(&ten) is 10
cout<<*(int *)(&ten)<<endl; //*(int *)(&ten) is 11
cout<<*(const int*)p<<endl; //*(const int*)p is 11
return 0;
}
想不明白为什么同一个地址,用两种不同的类型输出,会得到不同的结果??
(也并非完全如此,&ten转int *是11,p转const int*却不发生变化)
请高手解释一下吧!