這次的學(xué)習(xí)點比較多黍檩,也不打算一一記錄了估蹄,就來說說對于我這個剛剛接觸c++比較頭疼的指針和引用吧颂碧。
一.相同點:
指針指向一塊內(nèi)存娩鹉。這里面儲存的是指向內(nèi)存的地址。而引用稚伍,看起來有些不一樣弯予。但是實現(xiàn)上也是用了指針。它是某塊內(nèi)存的別名个曙。
ps:說起來有些拗口锈嫩。簡單理解起來就是兩個都是指針。不過引用是比較漂亮的指針垦搬。呼寸、
二.區(qū)別:
1. 指針是一個實體,而引用僅是個別名猴贰;
2. 引用使用時無需解引用(*)对雪,指針需要解引用;
3. 引用只能在定義時被初始化一次米绕,之后不可變瑟捣;指針可變馋艺;(2和3其實是相關(guān)的。因為引用只能初始化一次迈套,下次使用=賦值的時候捐祠,改變的是引用對象的值,所以無需解引用桑李。)踱蛀;
4. 引用沒有 const,指針有 const贵白,const 的指針不可變率拒;
5. 引用不能為空,指針可以為空禁荒;
6. “sizeof 引用”得到的是所指向的變量(對象)的大小猬膨,而“sizeof 指針”得到的是指針本身(所指向的變量或?qū)ο蟮牡刂罚┑拇笮。?/p>
typeid(T) == typeid(T&) 恒為真圈浇,sizeof(T) == sizeof(T&) 恒為真,但是當(dāng)引用作為成員時靴寂,其占用空間與指針相同(沒找到標(biāo)準(zhǔn)的規(guī)定)磷蜀。
7. 指針和引用的自增(++)運算意義不一樣;
三.使用
通常來說引用用在函數(shù)參數(shù)類型和返回參數(shù)之中百炬。
(下面借用下課堂ppt)
下面是一個需要注意的地方:
int i = 5褐隆;
int j = 6;
int& k = i剖踊;
k = j庶弃;?
猜猜k和i的值是多少?
他們的值都是6德澈;
因為k這個引用再次賦值的時候歇攻,是它引用的i的值被賦值了,而不是改變k引用的對象梆造。所以這里改變k的值缴守,就是 改變i的值,所以都是6.
最后說一句镇辉,因為引用的傳遞速度快 屡穗,所以函數(shù)傳參的時候,能夠使用引用的忽肛,盡量使用引用村砂。
ok,這次就到這里屹逛。后面繼續(xù)础废。