一些性質上的區別
1.指標是乙個變數,儲存的是乙個位址;引用只是變數的乙個別名而已;
2.指標可以有多級指標,乙個引用也可以有引用,但是得間接引用不能出現&&等操作;
3.指標可以為空,但是引用必須得初始化,不能有空引用;
4.指標得值在初始化後可以改變(可以指向別得位址),但是引用從始至終必能修改,從某種意義上來說,引用是乙個指標常量(實質是乙個指標常量指向b的位址,用的時候直接解引用,所以求不到引用的位址);
在這裡插一嘴:
常量指標:
const int a 和 int const a 等價;不能修改指向某變數的值;
指標常量:
int const a;不能修改指標的指向;(陣列首位址)***
5.sizeof引用得到引用物件得大小,sizeof指標是自己得大小(一般32位計算機指標大小都是4位元組);
6.自增(++)意義不一樣;
引用可以有引用.
乙個變數可以有多個引用.
指標也可以有引用.
陣列可以有引用。
總結:引用是指標得優化,盡可能得使用引用,不得已時使用指標;指標像一把剪刀,作用很大,也很危險,指標用處雖然大,但是***也大,伴隨著一些安全隱患;
C C 指標和引用區別
引用是別名,所以自身沒有空間,那麼必須與乙個合法的儲存單元關聯,所以定義必須初始化,所以引用不能為空,沒有null引用。指標是型別,有空間,可以為null,適用於動態分配記憶體。本質區別就是引用是別名,指標是型別,所以才表現出各自不同的特點。參考 1 儲存空間 指標是實體,有記憶體空間 引用是別名,...
C C 指標和引用的區別
從現象上看,指標在執行時可改變其所指向的值,而引用一旦和某個物件繫結後就不在改變。這句話可以這樣理解 指標可以被重新賦值以指向另乙個不同的物件。但是引用總指向在初始化時被指定的物件,以後不能改變,但是指定的物件內容可以改變。從記憶體上分配看,程式為指標變數分配記憶體區域,而不用為引用分配記憶體區域,...
C C 中指標和引用的區別
1.指標有自己的一塊空間,而引用只是乙個別名 2.使用sizeof看乙個指標的大小是4,而引用則是被引用物件的大小 3.指標可以被初始化為null,而引用必須被初始化且必須是乙個已有物件 的引用 4.作為引數傳遞時,指標需要被解引用才可以對物件進行操作,而直接對引 用的修改都會改變引用所指向的物件 ...