1. 程式人生 > >c++中引用和指標的區別

c++中引用和指標的區別

指標和引用的區別:

(1)當引用被建立時,它必須被初始化。而指標則可以在任何時候被初始化。
(2)一旦一個引用被初始化為指向一個物件,它就不能被改變為對另一個物件的引用。而指標則可以在任何時候指向另一個物件。
(3)不可能有NULL引用。必須確保引用是和一塊合法的儲存單元關聯。
進一步解析:

指標和引用都是 C++ 中的基本語法成份,它們既有聯絡,也有不同之處。

它們都是地址的概念,其中指標指向一塊記憶體,它的內容是所指記憶體的地址;而引用是某塊記憶體的別名,具體來說,指標是一個變數的地址,引用是一個變數的別名。

但它們的不同之處也很明顯,體現在以下方面:

指標是一個實體,而引用僅是個別名;

引用必須被初始化,指標不必;

引用只能在定義時被初始化一次,之後不可變;指標可以改變所指的物件;

可以有const指標,但是沒有const引用;

不存在指向空值的引用,但是存在指向空值的指標,即引用不能為空,指標可以為空;

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

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

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

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

指標和引用作為函式引數進行傳遞時也不同。用指標傳遞引數,可以實現對實參進行改變的目的;在將引用作為函式引數進行傳遞時,實質上傳遞的是實參本身,而不是實參的一個拷貝,因此對形參的修改其實是對實參的修改。