可能重复:
通过非常量指针修改 const
我正在学习 C++,并且对指针非常感兴趣。我试图改变一个常数值的值(我的老师称之为backdoor
,如果我错了,请澄清),如下所示:
const int i = 0;
const int* pi = &i;
int hackingAddress = (int)pi;
int *hackingPointer = (int*)pi;
*hackingPointer = 1;
cout << "Address:\t" << &i << "\t" << hackingPointer << endl;
cout << "Value: \t" << i << "\t\t" << *hackingPointer << endl;
system("PAUSE");
return 0;
然而,结果很奇怪。虽然这两个地址相同,但值不同。
我的代码是如何执行的?而价值究竟存储0
在哪里?1