首頁 > 後端開發 > C++ > C 中指標和引用參數的功能相同嗎?

C 中指標和引用參數的功能相同嗎?

Mary-Kate Olsen
發布: 2024-11-03 02:13:29
原創
757 人瀏覽過

Are Pointer and Reference Parameters Functionally Identical in C  ?

指標與引用參數:詳細檢查

問題:

問題:

做指針參數(例如指針參數,int foo(bar* p) { ... })和引用參數(例如,int foo(bar& r) { ... })在 C 中的行為相同?

答案:

指標和引用之間的區別超出了標準中的實作細節。引用體現了語法糖概念,本質上是為變數創建別名。這允許編譯器最佳化指標會增加複雜性的程式碼。

功能等價:

假設沒有空指標問題,函數foo(bar* p) 和foo如果someInt() 方法不是虛擬的, (bar& r)本質上是等價的。這兩個函數都透過參數直接存取物件的成員函數。但是,如果someInt() 是虛擬的,則基於引用的參數函數(foo(bar& r)) 將根據實際物件的類型呼叫正確的方法,而基於指標的函數(foo(bar* p)) 將始終調用基類方法。

分配給引用:

賦值 bar& ref = *ptr_to_bar 不會導致任何切片。引用 ref 將為 ptr_to_bar 指向的物件起別名,允許您直接存取其成員。

  • 其他差異:
  • 引用不能分配為 NULL。
指標的位址產生指標變數的位址,而引用的位址產生被引用變數的位址。 引用一旦初始化就不能重新分配。

以上是C 中指標和引用參數的功能相同嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板