透過非常量指標修改 const
在 C 中,const 變數一旦初始化就無法修改。但是,在某些情況下,const 變數可能會被更改。考慮以下程式碼:
<code class="cpp">const int e = 2; int* w = (int*)&e; // (1) *w = 5; // (2) cout << *w << endl; // (3) cout << e << endl; // (4)</code>
如果執行此程式碼,您會注意到意外的行為:
5 2
儘管*w 在(2) 中變更為5, e 仍然保持其原始值2。這種看似矛盾的行為源自於以下因素:
因此,當在運行時求值 *w 時,它會傳回修改後的值 (5)。但是,當 e 在編譯時求值時,將使用其原始值 (2)。
這種行為在 C 稱為未定義行為。直接或間接修改 const 變數會導致不可預測的後果,在這種情況下應謹慎行事。
以上是為什麼透過非 const 指標修改 const 變數看起來有效,但實際上並沒有改變它的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!