理解 C 中的引用重新分配
在 C 中,通常指出引用需要在聲明時初始化,並且不能重新分配。然而,最近的一項實驗對這個概念提出了質疑。讓我們研究一下以下程式中引用重新分配的行為:
程式將引用 ri 分配給整型變數 i,使 ri 成為 i 的別名。最初,ri 指向值 5。當 i 修改為 10 時,ri 正確反映了這一變化。然而,關鍵點是下一個語句:ri = j。
這不是引用的重新分配嗎?
令人驚訝的是,答案是否。 ri 仍然是 i 的引用。為了證明這一點,您可以比較 ri 和 i 的地址:它們是相同的。您觀察到的不是引用的重新分配,而是對 ri 指向的記憶體位置儲存的值的修改。
簡單來說,ri = j 相當於 *(&ri) = j ,其中 &ri 檢索 ri 的記憶體位址,並 * 取消引用它以存取該值。
作為比較,如果您建立 const int &cri = i,它將阻止任何重新分配給 cri,強制其不變的性質。
總之,雖然引用不能重新分配給 C 中的新變量,但它們可以用於修改它們引用的物件的值,如我們的程式中所示。
以上是C 中的引用可以重新分配嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!