指針和引用的聯繫與區別

來源:http://www.cppblog.com/aurain/archive/2008/02/22/43093.aspx

★ 相同點:
1. 都是地址的概念;
指針指向一塊內存,它的內容是所指內存的地址;引用是某塊內存的別名。

★ 區別:
1. 指針是一個實體,而引用僅是個別名;
2. 引用使用時無需解引用(*),指針需要解引用;
3. 引用只能在定義時被初始化一次,之後不可變;指針可變;
4. 引用沒有 const,指針有 const;(引用可以有const?)
5. 引用不能爲空,指針可以爲空;
6. “sizeof 引用”得到的是所指向的變量(對象)的大小,而“sizeof 指針”得到的是指針本身(所指向的變量或對象的地址)的大小;
7. 指針和引用的自增(++)運算意義不一樣;
8.從內存分配上看:程序爲指針變量分配內存區域,而引用不需要分配內存區域。

指針的解引用的概念:指針的解引用,是真引用它指向的變量的值。(引用是指向關係不變的指針

 

 

來源:http://canaan.jimdo.com/2009/02/17/引用和指針的區別形象詳細說明/

引用和指針的區別

 

 

 

定義

初始化

 

用法

指針

變量的指針就是變量的地址

可以不初始化,不過一般初始化爲NULL

可以隨時改變所指的對象

在一般情況下,引用和指針是一樣的;在返回一個對象時,儘量不要用引用,而是指針。

 

引用

引用是變量的別名

在定義時必須指定某個變量

一旦初始化,就不能改變引用的關係

 

 

 

問題:實際上引用可以做的任何事情指針也都能夠做,爲什麼還要引用這東西?

 

答案:

 

我的反問:爲什麼有了斧頭之後,還有菜刀,小刀之類的呢?現在就很明白了。

殺雞焉用牛刀?我們要用適當的工具做恰如其分的工作。

 

如果的確只需要借用一下某個對象的別名,那麼就用引用,而不要用指針
以免發生意外。比如說有人向你借一百塊錢,那你給他一百,就恰如其分了。如果你非

要給他銀行卡,密碼。那後果會怎樣誰也不知道。功能強大是好,但不是越大越好,

有人會搞破壞的,要恰如其分

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章