首頁 >後端開發 >C++ >C 中的引用可以重新分配嗎?

C 中的引用可以重新分配嗎?

Patricia Arquette
Patricia Arquette原創
2024-12-05 20:03:11920瀏覽

Can References Be Reassigned in C  ?

理解 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn