引用又稱 別名,它可以最為對象的一個名字,但它既不是對象的指針,也不是對象的副本。
通過引用可以間接地操作對象,使用方式類似於指針,但不需要指針的語法。
使用規則:
1> 引用被創建的同時必須被初始化,(指針可以在任何時候被初始化
int a = 12;
int &b = a;//正確
int &c;//錯誤
2> 一旦引用被初始化,就不能改變引用的關系(指針可以隨時改變所指的對象)
3> 引用的所有操作實際上都是應用在它所指的對象身上,包括取址操作符
4> 不能有NULL引用,引用必須與合法的存儲單元關聯(指針則可以是NULL)
直接訪問:按變量地址存取變量值
間接訪問:通過變量地址的的變量去訪問變量
指針:指針就是它的值表示內存地址的變量
如果兩個指針都指向同一個數組中的元素,它們之間可以相減。
任何指針之間都可以進行比較,測試它們相等或不相等。
指針和引用的異同
相同點:
都是地址的概念,指針所指向的一塊內存,它的內容是所指內存的地址,而引用則是某塊內存的別名。
不同點:
1> 指針是一個實體,而引用是個別名
2> 引用只能在定義時初始化一次,之後不可改變,指針則可以;引用“從一而終”,指針“見異思遷“
3> 引用沒有const,指針有const,有const的指針不可改變
4> 引用不可為空,而指針可以為空
5> Sizeof引用得到的是所指變量(對象)的大小,而sizeof得到的是指針本身的大小
6> 指針和引用的自增(++)運算意義不一樣
7> 引用是類型安全的,而指針不是(引用比指針多了類型檢查)
摘自:飛哥的專欄