#include
using
namespace std;
void
swap1
(int a,
int b)
//只改變形參
void
swap2
(int
&a,int
&b)//引用,取別名
void
swap3
(int
*a,int
*b)//傳指標,位址
intmain()
結果如下
函式引數不加任何符號時,只改變形參的值,而對實參無任何影響,執行函式時,只是將實參的值傳給形參。
& 可以理解為,將該變數取了乙個別名,形參變化會引起實參變化。
*則是取位址,指向變數,位址裡面的內容變化,實參跟著變化,實際運用中,&要比指標的執行效率高,同時不用在執行swap3(&a, &b)函式時加上位址符號,更加方便快捷。個人推薦使用&
注意,swap2已經將a、b的值交換了,所以swap3將其交換回來,這一塊沒有問題。
傳值 傳位址 傳引用 的區別
傳值 傳位址 傳引用 1 傳值 優點 函式的 不會影響外部的實參 可讀性較高 缺點 傳參效率低 不能通過形參改變實參 對實參有保護作用 void swap int x,int y 2 傳位址 優點 傳參效率高 傳位址只需要4個位元組 確定 傳值變數大小不確定,有可能佔很大空間 可以通過形參改變實參 ...
PHP 傳值和傳引用 傳位址的區別
傳值,是把實參的值賦值給行參 那麼對行參的修改,不會影響實參的值 傳位址是傳值的一種特殊方式,只是他傳遞的是位址,不是普通的如int 那麼傳位址以後,實參和行參都指向同乙個物件 傳引用真正的以位址的方式傳遞引數 傳遞以後,行參和實參都是同乙個物件,只是他們名字不同而已 對行參的修改將影響實參的值 a...
PHP傳值和傳引用 傳位址的區別
php傳值和傳引用 傳位址的區別是什麼?傳值 是把實參的值賦值給形參,那麼對形參的修改,不會影響實參的值 是傳值的一種特殊方式,只是他傳遞的是位址,不是普通的如int 那麼傳位址以後,實參和形參都指向同乙個物件 傳引用 真正的以位址的方式傳遞引數 傳遞以後,形參和實參都是同乙個物件,只是他們名字不同...