重複の可能性:
非constポインターを介して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;
しかし、結果は非常に奇妙です。2つのアドレスは同じですが、値は異なります。
私のコードはどのように実行されますか?そして、値はどこに0
正確1
に保存されていますか?