透過非常量指標修改const
考慮以下程式碼:
<code class="cpp">const int e = 2; int* w = (int*) &e; // (1) cast to remove const-ness *w = 5; // (2) cout << *w << endl; // (3) outputs 5 cout << e << endl; // (4) outputs 2 cout << "w = " << w << endl; // (5) w points to the address of e cout << "&e = " << &e << endl;</code>
In (1 ), w 指向e 的地址。在(2)中,該值更改為5。但是,當顯示*w和e的值時,它們的值是不同的。但如果列印指標 w 和 e 的位址,它們的值是相同的。
為什麼 e 變成了 5,還是包含 2?它們是否存放在單獨的位置?還是臨時的?但為什麼w指向的值還是e的位址呢?
回答
一旦修改了const值,就進入了未定義的行為領域。然而,推測:
以上是為什麼透過非常量指標修改「const」值會導致未定義的行為,但仍然為指標和原始變數列印不同的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!