(一)引用
爲一個已經存在的對象起了一個別名,通過&來實現。
int val = 1024;
int &refVal = val; //正確
int &refVal2; //錯誤,引用必須初始化,並且不能被重新賦值
注意:
(1)引用不是對象,本身不佔內存,對引用求地址,就是對目標變量求地址。
(2)引用只能綁定在對象上,不能綁定在字面值或表達式的計算結果上(const和含有繼承關係的類除外),引用和目標變量的類型應該嚴格一致。
(3)不能建立數組的引用,也不能建立引用的引用。
(二)指針
指針內存放的是某個對象的地址
1、與引用的不同:
(1)指針本身是一個對象,允許對指針賦值和拷貝。
(2)在指針的生命週期內可以先後指向不同的對象。
(3)指針不需要再定義時賦值。
注意:引用不是對象,不能定義指向引用的指針。
2、空指針:nullptr(C++新標準)和NULL(導入cstdlib包)
3、void* 指針:void* 指針中可以存放任意類型的對象的地址。不能直接對void*指針所指的對象進行操作,因爲不知道對象是什麼類型。