1.在內存中有地址和值兩種,
值傳遞只是把變量的值複製給形參
引用傳遞只是把變量的地址複製給形參,在另一個函數中直接操作地址
指針傳遞是在一個形參中將實參的地址賦值給形參的值
指針傳遞與引用傳遞的區別:
(指針傳遞本質上時值傳遞)
1.引用傳遞在使用前必須被初始化,指針傳遞則可以在任意時候被初始化
2.指針傳遞是一個指針可以指向別的變量,也可以指向NULL,而引用傳遞只能使用形參傳遞過來的地址變量
特殊用法:當在一個局部函數中只能返回一個值給主函數,實際需要返回多個函數值,這時就可以使用引用傳遞或者指針傳遞。
★相同點:
●都是地址的概念;
指針指向一塊內存,它的內容是所指內存的地址;而引用則是某塊內存的別名。
★不同點:
●指針是一個實體,而引用僅是個別名;
●引用只能在定義時被初始化一次,之後不可變;指針可變;引用“從一而終”,指針可以“見異思遷”;
●引用沒有const,指針有const,const的指針不可變;(具體指沒有int& const a這種形式,而const int& a是有 的, 前者指引用本身即別名不可以改變,這是當然的,所以不需要這種形式,後者指引用所指的值不可以改變)
●引用不能爲空,指針可以爲空;
●“sizeof 引用”得到的是所指向的變量(對象)的大小,而“sizeof 指針”得到的是指針本身的大小;
●指針和引用的自增(++)運算意義不一樣;
●引用是類型安全的,而指針不是 (引用比指針多了類型檢查)