亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go 和 C++ 中指針和引用之間的邏輯區別?

Go 和 C++ 中指針和引用之間的邏輯區別?

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

2 回答

?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

你問兩個問題,如果我理解正確的話

  1. 指針和引用有什么區別

  2. 為什么支持這兩種數據類型

開始:

  1. 指針指的是內存中數據類型所在的位置。給定底層硬件,指針的大小是固定的,通常為 4 或 8 個字節 - 完全不管它實際上指向什么。此外,可以使用無效值將指針傳遞給函數 - foo(reintepret_cast<int *>(0xDEADBEEF) );。相比之下,引用確保基礎數據是有效的——因為引用是對象本身的別名,并且不能移動(前提是被引用的對象仍在范圍內——根據下面的評論進行編輯)。

  2. 有理由支持這兩種類型。第一個原因是確保傳遞給函數的數據是有效的 - 不會在測試指針有效性(而不是NULL)上浪費周期。第二個原因是可以確定數據不僅指向有效位置,而且還指向有效數據對象。但主要原因是引用允許我們享受調用函數而不按值傳遞參數的好處,但仍然保證參數引用有效值。


查看完整回答
反對 回復 2021-06-21
?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

你應該問 Bjarne Stroustrup 為什么 C++ 有引用。在其他地方,他在第 7.7 節參考資料,C++ 編程語言,第四版第 189 頁中提供了他的基本原理?!禖++ 的設計與演化》第 86 卷。


查看完整回答
反對 回復 2021-06-21
  • 2 回答
  • 0 關注
  • 310 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號