無論提供了對指針的引用的便利性,例如無針解引用和特定于每個使用的規則,提供兩種語言結構作為指針和引用是否有任何合乎邏輯的理由,或者它只是一種語法糖?(我猜最終的底層實現是編譯器將對引用使用與暗示/檢查由語言為引用定義的規則的指針相同的步驟。)注意:問題不在于語言對引用定義的規則,例如“引用不允許在 C++ 中分配 NULL 但在指針中”等。
2 回答

呼喚遠方
TA貢獻1856條經驗 獲得超11個贊
你問兩個問題,如果我理解正確的話
指針和引用有什么區別
為什么支持這兩種數據類型
開始:
指針指的是內存中數據類型所在的位置。給定底層硬件,指針的大小是固定的,通常為 4 或 8 個字節 - 完全不管它實際上指向什么。此外,可以使用無效值將指針傳遞給函數 -
foo(reintepret_cast<int *>(0xDEADBEEF) );
。相比之下,引用確保基礎數據是有效的——因為引用是對象本身的別名,并且不能移動(前提是被引用的對象仍在范圍內——根據下面的評論進行編輯)。有是有理由支持這兩種類型。第一個原因是確保傳遞給函數的數據是有效的 - 不會在測試指針有效性(而不是
NULL
)上浪費周期。第二個原因是可以確定數據不僅指向有效位置,而且還指向有效數據對象。但主要原因是引用允許我們享受調用函數而不按值傳遞參數的好處,但仍然保證參數引用有效值。

嗶嗶one
TA貢獻1854條經驗 獲得超8個贊
你應該問 Bjarne Stroustrup 為什么 C++ 有引用。在其他地方,他在第 7.7 節參考資料,C++ 編程語言,第四版第 189 頁中提供了他的基本原理?!禖++ 的設計與演化》第 86 卷。
- 2 回答
- 0 關注
- 310 瀏覽
添加回答
舉報
0/150
提交
取消