透過非常量指標修改常數
在給定的程式碼中,常數變數 e 初始化為 2。然後 const 指標 w 轉換為指向 e 的位址,隱式地刪除了變數的 const 性。透過解引用 w 並為其賦值,e 位址處的值從 2 修改為 5。
但是,當列印*w 和e 的值時,它們看起來不同:
<code class="cpp">cout << *w << endl; // Outputs 5 cout << e << endl; // Outputs 2</code>
此行為可以透過考慮*w 和e 求值的不同方式來解釋:
因此,數值的差異源自於 *w 和 e 的不同評估時間。儘管修改了 e 位址處的值,但常數變數本身在編譯時保持不變。然而,非常量指標 w 允許修改它指向的位址處的值,從而導致 *w 的輸出為 5。
以上是為什麼修改後的常數變數在編譯時保留其原始值,即使非常量指標允許修改其實際值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!