【发布时间】:2012-05-29 10:44:02
【问题描述】:
我正在学习 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 的值究竟存储在哪里?
【问题讨论】:
-
另外,从今天早些时候开始:stackoverflow.com/questions/10792757/…
-
@Mankarse 哇,也许那是我的朋友。我们之前讨论过这个问题,我不知道他在我之前发过 StackOverflow :) 我应该投票删除吗?