亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中的指針與引用有什么區別

發布時間:2022-02-23 13:39:16 來源:億速云 閱讀:113 作者:iii 欄目:開發技術

這篇文章主要介紹“C++中的指針與引用有什么區別”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“C++中的指針與引用有什么區別”文章能幫助大家解決問題。

指針在C ++是保存另一個變量的存儲器地址的變量。引用是一個已經存在的變量的別名。一旦引用被初始化為一個變量,它就不能被更改為引用另一個變量。因此,引用類似于 const 指針(不要與指向常量值的指針混淆!)。

主要區別

指針

  • 指針在聲明后,無論何時都可以初始化為任意值。

int a = 5;
// some code
int *p = &a;
  • 可以分配一個指針來指向一個NULL值。

  • 指針需要使用 *.

  • 指針可以改為指向相同類型的任何變量。

例子:

int a = 5;
int *p;
p = &a;
int b = 6;
p = &b;

參考

  • 引用被聲明時必須進行初始化。

int a = 5;
int &ref = a;
  • 引用不能是NULL.

  • 可以簡單地按名稱使用引用。

  • 一旦引用被初始化為一個變量,它就不能被更改為引用一個變量對象。

其他差異

內存詳情

指針在堆棧上有其自己的內存地址和大小,而引用共享相同的內存地址(與原始變量),但也占用棧堆上的部分空間。

算術運算

可以對指針執行各種算術運算,而沒有稱為引用算術的東西。(但可以取一個引用指向的對象的地址,然后像在&obj + 6中那樣對它進行指針運算)。

指針和引用在什么時候使用

性能完全相同,因為引用在內部實現為指針。但是仍然可以記住一些要點來決定什么時候使用什么:

使用參考:

  • 在函數參數和返回類型中。使用指針:

  • 如果需要指針運算或傳遞 NULL 指針,請使用指針。例如對于數組(請注意,數組訪問是使用指針算術實現的)。

  • 要實現鏈表、樹等數據結構及其算法,因為指向不同的單元格,我們必須使用指針的概念。

正如C++ 官方常見問題解答中所說:

可以時使用引用,必要時使用指針。

當你不需要“重置”時,引用通常優先于指針。這通常意味著引用在類的公共接口中最有用。引用通常用在對象的外觀上,指針用在內部。


上述的例外情況是,函數的參數或返回值需要一個“sentinel”引用—一個不引用對象的引用。這通常是通過返回/獲取指針,并賦予nullptr值這種特殊意義(引用必須始終別名對象,而不是取消引用的null指針)來實現的。


注意:老 C 語言程序員有時不喜歡引用,因為它們提供的引用語義在調用方的代碼中并不明確。然而,經過一些C++體驗,人們很快意識到這是一種信息隱藏的形式,它是一種資產而不是責任。例如,程序員應該用問題的語言而不是機器的語言編寫代碼。

關于“C++中的指針與引用有什么區別”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

建昌县| 西林县| 商城县| 芦山县| 桃园县| 广南县| 阳信县| 乾安县| 措美县| 磐安县| 精河县| 舒城县| 墨脱县| 方正县| 东阿县| 毕节市| 武清区| 丽水市| 老河口市| 温宿县| 西乌珠穆沁旗| 遂川县| 东源县| 若尔盖县| 屏东市| 沿河| 大化| 兰州市| 农安县| 宜宾市| 大竹县| 周宁县| 玉环县| 维西| 大田县| 静安区| 庆阳市| 绥化市| 永善县| 浠水县| 沙湾县|