傳位址和傳值的區別

2021-10-01 20:51:24 字數 679 閱讀 1238

#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 那麼傳位址以後,實參和形參都指向同乙個物件 傳引用 真正的以位址的方式傳遞引數 傳遞以後,形參和實參都是同乙個物件,只是他們名字不同...