指標和引用的區別

2021-09-09 01:45:44 字數 823 閱讀 3520

指標:

是乙個變數,只不過這個變數儲存的是乙個位址,指向記憶體的乙個儲存單元;

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

int a=1;

int *p=&a;

定義了乙個整形變數a和乙個指標變數p,p指向a的儲存單元,即p的值是a儲存單元的位址。

int a=1;

int &b=a;

定義了乙個整形變數a和a的引用b,事實上a和b是同乙個東西,在記憶體占有同乙個儲存單元。

示例**如下:

int main()

結果如下:

其他區別如下:

(1)引用不可以為空,被建立時,必須初始化,指標可以是空值,可在任何時候被初始化,使用時需判空操作。

(2)可以有const指標,但是沒有const引用,const的指標不可變,指向的內容可變;

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

(4)指標的值在初始化後可以改變,即指向其它的儲存單元,引用初始化後不會改變,只能綁在最初的物件上。

(5)」sizeof引用」得到的是所指向的變數(物件)的大小,而」sizeof指標」得到的是指標本身的大小;

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

(7)如果返回動態記憶體分配的物件或者記憶體,必須使用指標,引用可能引起記憶體洩漏;

(8).程式為指標變數分配記憶體區域,而引用不需要分配記憶體

指標引用和引用指標的區別

c 在傳參的過程中,指標 和指標引用 是有區別的。雖然,我們往往可以通過傳指標然後通過間址訪問來修改指標所指向物件的值,同樣,通過引用也可以直接修改物件的值。但是,當傳指標的時候有乙個問題,就是,我們雖然可以通過指標來修改指標所指向物件的值,但是我們沒有不能直接修改指標的內容 也就是指標變數存放的位...

傳指標和傳指標引用的區別 指標和引用的區別(本質)

指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。值傳遞的特點是被調函式對形式引數的任何操作都是作為區域性變數進行,不會影響主調函式的實參變數的值...

傳指標和傳指標引用的區別 指標和引用的區別(本質)

指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。值傳遞的特點是被調函式對形式引數的任何操作都是作為區域性變數進行,不會影響主調函式的實參變數的值...