C++ 指針和引用

引用和指針的區別和聯繫

1. 引用只能在定義時初始化一次,以後不能改變指向其它變量(從一而終);指針變量的值可變。安全

2. 引用必須指向有效的變量,指針能夠爲空。函數

3. sizeof指針對象和引用對象的意義不同。sizeof引用獲得的是所指向的變量的大小,而sizeof指針是對象地址的大小。指針

4. 指針和引用自增(++)自減(--)意義不同。對象

5. 相對而言,引用比指針更安全。內存

不一樣點:變量

  1. 指針是一個實體,而引用僅是個別名;
  2. 引用使用時無需解引用(*),指針須要解引用;
  3. 引用只能在定義時被初始化一次,以後不可變;指針可變;
  4. 引用沒有 const,指針有 const;const修飾的指針不可變;
  5. 引用不能爲空,指針能夠爲空;
  6. 「sizeof 引用」獲得的是所指向的變量(對象)的大小,而「sizeof 指針」獲得的是指針自己(所指向的變量或對象的地址)的大小;
  7. 指針和引用的自增(++)運算意義不同;

8.從內存分配上看:程序爲指針變量分配內存區域,而引用不須要分配內存區域。引用

相同點:
二者都是地址的概念,指針指向一起內存,其內容爲所指內存的地址;引用是某塊兒內存的別名。程序

函數參數傳遞中值傳遞、地址傳遞、引用傳遞有什麼區別?

(1) 值傳遞,會爲形參從新分配內存空間,將實參的值拷貝給形參,形參的值不會影響實參的值,函數調用結束後形參被釋放;內存分配

(2) 引用傳遞,不會爲形參從新分配內存空間,形參只是實參的別名,形參的改變會影響實參的值,函數調用結束後形參不會被釋放;co

(3) 地址傳遞,形參爲指針變量,將實參的地址傳遞給函數,能夠在函數中改變實參的值,調用時爲形參指針變量分配內存,結束時釋放指針變量。

相關文章
相關標籤/搜索