c++學習記錄4(GeekBand)

這次的學習點比較多,也不打算一一記錄了,就來說說對于我這個剛剛接觸c++比較頭疼的指針和引用吧。

一.相同點:

指針指向一塊內存。這里面儲存的是指向內存的地址。而引用,看起來有些不一樣。但是實現上也是用了指針。它是某塊內存的別名。

ps:說起來有些拗口。簡單理解起來就是兩個都是指針。不過引用是比較漂亮的指針。、

二.區別:

1. 指針是一個實體,而引用僅是個別名;

2. 引用使用時無需解引用(*),指針需要解引用;

3. 引用只能在定義時被初始化一次,之后不可變;指針可變;(2和3其實是相關的。因為引用只能初始化一次,下次使用=賦值的時候,改變的是引用對象的值,所以無需解引用。);

4. 引用沒有 const,指針有 const,const 的指針不可變;

5. 引用不能為空,指針可以為空;

6. “sizeof 引用”得到的是所指向的變量(對象)的大小,而“sizeof 指針”得到的是指針本身(所指向的變量或對象的地址)的大小;

typeid(T) == typeid(T&) 恒為真,sizeof(T) == sizeof(T&) 恒為真,但是當引用作為成員時,其占用空間與指針相同(沒找到標準的規定)。

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

三.使用

通常來說引用用在函數參數類型和返回參數之中。

(下面借用下課堂ppt)


下面是一個需要注意的地方:

int i = 5;

int j = 6;

int& k = i;

k = j;?

猜猜k和i的值是多少?

他們的值都是6;

因為k這個引用再次賦值的時候,是它引用的i的值被賦值了,而不是改變k引用的對象。所以這里改變k的值,就是 改變i的值,所以都是6.

最后說一句,因為引用的傳遞速度快 ,所以函數傳參的時候,能夠使用引用的,盡量使用引用。

ok,這次就到這里。后面繼續。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容