傳值 傳位址 傳引用 的區別

2021-09-24 07:06:33 字數 549 閱讀 3867

傳值 傳位址 傳引用

1 傳值

優點: 函式的***不會影響外部的實參 ;**可讀性較高

缺點: 傳參效率低 ; 不能通過形參改變實參 ,對實參有保護作用

void swap(int x,int  y)
2 傳位址

優點: 傳參效率高 傳位址只需要4個位元組(確定) 傳值變數大小不確定,有可能佔很大空間; 可以通過形參改變實參

缺點: 指標不安全,可讀性差

void  swap(int *x,int *y)
備註: 優點和缺點不是固定的屬性,隨著應用場景的改變 ,優點可能變成缺點 ,缺點也可能變成優點

3 傳引用

優點: 兼併了傳值和傳指標的優點

1. 一方面擁有指標的高傳參效率

2. 另一方面擁有傳值的的高可讀性.

3. 而且比傳指標更安全,可以通過形參來改變實參.

void swap(int& x, int& y)

int main()

傳值 傳引用 傳位址

1.值傳遞 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來說,值傳遞是單向的 實參 形參 引數的值只能傳入,不能傳出。當函式內部需要修改引數,並且不希望這個改變影響呼叫者時,採用值傳遞。void swap int a,int b 呼叫 int x,y swap x,y 實...

php傳值,傳位址,傳引用的區別

傳值,是把實參的值賦值給行參 那麼對行參的修改,不會影響實參的值 傳位址是傳值的一種特殊方式,只是他傳遞的是位址,不是普通的如int 那麼傳位址以後,實參和行參都指向同乙個物件 傳引用真正的以位址的方式傳遞引數 傳遞以後,行參和實參都是同乙個物件,只是他們名字不同而已 對行參的修改將影響實參的值 a...

PHP 傳值和傳引用 傳位址的區別

傳值,是把實參的值賦值給行參 那麼對行參的修改,不會影響實參的值 傳位址是傳值的一種特殊方式,只是他傳遞的是位址,不是普通的如int 那麼傳位址以後,實參和行參都指向同乙個物件 傳引用真正的以位址的方式傳遞引數 傳遞以後,行參和實參都是同乙個物件,只是他們名字不同而已 對行參的修改將影響實參的值 a...