網站首頁 健康小知識 母嬰教育 起名 運動知識 職場理財 情感生活 綠色生活 遊戲數碼 美容 特色美食 愛好
當前位置:酷知知識幫 > 遊戲數碼 > 電腦

引用與指針的區別

欄目: 電腦 / 發佈於: / 人氣:8.69K

常常有人問引用與指針的區別,可能是指針和引用在功能上的相似,而是他們混淆這兩個概念,
現在總結以下二者的區別,希望大家能徹底弄清這兩個概念根本性的差別

步驟/方法

(01)引用,一個變量的別名,為什麼引入別名呢?原因是我們想定義一個變量,他共享另一個變量的內存空間,使用別名無疑是一個好的選擇。變量是什麼?是一個內存空間的名字,如果我們給這個內存空間在起另外一個名字,那就是能夠共享這個內存了,引用(別名)的由此而來。指針,指向另一個內存空間的變量,我們可以通過它來索引另一個內存空間的內容,本身有自己的內存空間。

引用與指針的區別

(02)二者區別:引用訪問一個變量是直接訪問,而指針是間接訪問。引用是一個變量的別名,本身不單獨分配自己的內存空間,而指針有自己的內存空間。引用在開始的時候就綁定到了一個內存空間(開始必須賦初值),所以他只能是這個內存空間的名字,而不能改成其他的,當然可以改變這個內存空間的值.例如int i = 3,j = 4;int &x = i;//成為i的別名x = j;//不能否認x仍然引用i,並沒有成為j的別名,只是修改了x和j共享的內存空間的值.這點與指針不同,指針在任何時刻都可以改變自己的指向

引用與指針的區別 第2張

(03)你無法讓引用與其指示物分離。和指針不同,一旦引用和對象綁定,它無法再被重新指向其他對象。引用本身不是一個對象(它沒有標識;當試圖獲得引用的地址時,你將的到它的指示物的地址;記住:引用就是它的指示物 )。從某種意義上來説,引用類似 int* const p 這樣的const指針(並非如 const int* p這樣的指向常量的指針)。不管有多麼類似,請不要混淆引用和指針;它們完全不同。何時該使用引用, 何時該使用指針?儘可能使用引用,不得已時使用指針。

引用與指針的區別 第3張

(04)當你不需要“重新指向(reseating)”時,引用一般優先於指針被選用。這通常意味着引用用於類的公有接口時更有用。引用出現的典型場合是對象的表面,而指針用於對象內部。上述的例外情況是函數的參數或返回值需要一個“臨界”的引用時。這時通常最好返回/獲取一個指針,並使用 NULL指針來完成這個特殊的使命。(引用應該總是對象的別名,而不是被解除引用的 NULL 指針)。注意:由於在調用者的代碼處,無法提供清晰的的引用語義,所以傳統的 C 程序員有時並不喜歡引用。然而,當有了一些 C++經驗後,你會很快認識到這是信息隱藏的一種形式,它是有益的而不是有害的。就如同,程序員應該針對要解決的問題寫代碼,而不是機器本身。

引用與指針的區別 第4張
Tags:指針 引用