一、相同點:
1. 都是地址的概念;
指針指向一塊內存,它的內容是所指內存的地址;引用是某塊內存的別名。
二、 區別:
1. 指針是一個實體,而引用僅是個別名;
2. 引用使用時無需解引用(*),指針需要解引用;
3. 引用只能在定義時被初始化一次,之后不可變;指針可變;
4. 引用沒有 const,指針有 const,const 的指針不可變;
5. 引用不能為空,指針可以為空;
6. “sizeof 引用”得到的是所指向的變量(對象)的大小,而“sizeof 指針”得到的是指針本身(所指向的變量或對象的地址)的大小;
typeid(T) == typeid(T&) 恒為真,sizeof(T) == sizeof(T&) 恒為真,但是當引用作為成員時,其占用空間與指針相同(沒找到標準的規定)。
7. 指針和引用的自增(++)運算意義不一樣;
針對4)引用沒有 const,指針有 const,const 的指針不可變;有如下例子:
![Uploading 屏幕快照 2016-10-31 23.28.03_088189.png . . .]