1. 程式人生 > >C++指標和引用的區別與聯絡

C++指標和引用的區別與聯絡


1.指標和引用的定義和性質區別:

(1)指標是一個變數,只不過這個變數儲存的是一個地址,指向記憶體的一個儲存單元;

    而引用跟原來的變數實質上是同一個東西,只不過是原變數的一個別名而已。

(2)可以有const指標,常量指標可以改變指向,指標常量不能改變指向,

    也可以有const引用,引用的指向不能改變;

(3)指標可以有多級,但是引用只能是一級(int **p;合法 而 int &&a是不合法的)

(4)指標的值可以為空,但是引用的值不能為NULL,並且引用在定義的時候必須初始化;

(5)指標的值在初始化後可以改變,即指向其它的儲存單元,而引用在進行初始化後指向的記憶體單元不再改變;

(6)“sizeof引用”得到的是所指向的變數(物件)的大小,而”sizeof指標”得到的是指標本身的大小,即地址的大小;

(7)指標和引用的自增(++)運算意義不一樣;

2.指標和引用作為函式引數進行傳遞時的區別。

用指標傳遞引數,可以實現對實參進行改變的目的,是因為傳遞過來的是實參的地址,因此使用*a實際上是取儲存實參的記憶體單元裡的資料,即是對實參進行改變,因此可以達到目的。

在將引用作為函式引數進行傳遞時,實質上傳遞的是實參本身,即傳遞進來的不是實參的一個拷貝,因此對形參的修改其實是對實參的修改,所以在用引用進行引數傳遞時,不僅節約時間,而且可以節約空間。、

3.何時使用引用和指標

指向空值,可改變指向,多級傳遞:指標

可用引用的地方都可用用指標,反之不行。