傳值 傳引用 傳位址

2021-07-27 07:59:30 字數 611 閱讀 1463

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

void swap(int a,int b)

呼叫:int x,y ;  swap(&x,&y);   

實參x,y, 形參a,b的位址同上,是乙個指向外部實參位址的指標,*a是指標的內容,如果改變了*a也必然導致外部實參的改變。

3.引用傳遞  

void swap(int &a,int &b)

實參x,y的位址同上。然而與指標傳遞不同的是,形參a,b的位址也與x,y相同,這樣一來,交換a,b就相當於交換x,y。

總結   

指標傳遞和引用傳遞一般適用於:函式內部修改引數並且希望改動影響呼叫者。對比值傳遞,指標/引用傳遞可以將改變由形參「傳給」實參(實際上就是直接在實參的記憶體上修改,不像值傳遞將實參的值拷貝到另外的記憶體位址中才修改)。指標/引用傳遞的另外一種用法是:當乙個函式實際需要返回多個值,而只能顯式返回乙個值時,可以將另外需要返回的變數以指標/引用傳遞給函式,這樣在函式內部修改並且返回後,呼叫者可以拿到被修改過後的變數,也相當於乙個隱式的返回值傳遞吧。

傳值 傳位址 傳引用 的區別

傳值 傳位址 傳引用 1 傳值 優點 函式的 不會影響外部的實參 可讀性較高 缺點 傳參效率低 不能通過形參改變實參 對實參有保護作用 void swap int x,int y 2 傳位址 優點 傳參效率高 傳位址只需要4個位元組 確定 傳值變數大小不確定,有可能佔很大空間 可以通過形參改變實參 ...

傳值呼叫與傳位址呼叫(傳引用)

c c 中引數傳遞有兩種方式,傳值或傳位址 傳引用 通常我們要在被呼叫函式中改變乙個變數的值就需要傳位址呼叫方式,例如 void swap by value int a,int b void swap by ptr int pa,int pb int main int argc,char argv ...

C 學習 (02)傳值 傳引用 傳位址

include using namespace std class complex 內聯函式 inline int imag const complex operator complex n complex complex int r 0,int i 0 re r im i 建構函式的初始化列表 c...