C C 引數傳遞的3種方式

2021-07-07 07:28:27 字數 1057 閱讀 7364



c/c++引數傳遞的3種方式

在c/c++程式設計中有3種引數傳遞方式

1. (單向)值傳遞

單向值傳遞一般用於c/c++程式中簡單資料型別的資料作為引數傳入。

#include 

int swap(int age1,int age2)

int main()

如上** age1,age2引數就是用於func1函式的輸入的,雖在func1函式內部交換了age1和age2的值,但是在main函式中的age1 age2值仍然是20 21。這個就是單向傳遞,方向從呼叫函式中將值傳遞到被調函式中,在被呼叫函式中的任何對形參的改變都不會影響實參的值。

在c++程式中也可以使用這種方式,但是當單向傳遞的引數是結構體或者類型別的變數的時候咱們就不會考慮使用這種方法了。原因在方式2中說明。

2. 位址傳遞

將位址作為引數傳遞在c/c++中均可使用。

由第一種方式我們知道簡單資料型別作為單向值傳遞很清晰簡潔,對於復合的資料型別如果還是採用方式1的話就會帶來不必要的開銷。

此時我們考慮在c中使用方式2,在c++中優先考慮使用方式3.

#include 

int swap(int *age1,int *age2)

int main()

在以上**中在主調函式中傳遞變數的位址,在被調函式中引數使用指標變數接受實參位址,通過對形參的解引用操作取出實參的值 借助臨時變數實現兩個指標指向的變數的值的交換。

方式2的中如果通過形參指標變數對其指向的位址寫入了資料。那麼函式在結束呼叫的時候寫入資料的影響並不會消失。所以main函式中列印出21 20。

3. (雙向)引用傳遞

由於引用是c++程式設計的概念,因此引用傳遞只能在c++程式中使用。

引用操作簡單,在使用的時候當作簡單的乙個變數使用即可。如果在不深究期實現原理的情況下,可以簡單的認為引用就是變數的乙個別名即可。

#include 

int swap(int &age1,int &age2)

int main()

在c++程式設計中大量使用了物件的(常)引用,因此希望朋友們能夠理解引用的用法。

函式引數傳遞的3種方式

先看三種方式實現函式中引數傳遞的例項程式 輸入描述 兩個待交換的整數 程式輸出 交換後得兩個整數 includevoid myswap int x,int y int main includevoid myswap int p1,int p2 int main includevoid myswap ...

C C 函式引數的三種傳遞方式

函式引數傳遞方式一 值傳遞 格式 void swap int a,int b void main 函式引數傳遞方式二 位址傳遞 格式 void swap int a,int b void main 函式引數傳遞方式三 引用傳遞 注意 引用傳遞在c中不可用,僅c 支援 格式 void swap int...

C C 中函式引數的三種傳遞方式

一 值傳遞 這種傳遞方式中,實參和形參是兩個不同的位址空間,引數傳遞的實質是將原函式中變數的值,複製到被呼叫函式形參所在的儲存空間中,這個形參的位址空間在函式執行完畢後,會被 掉。整個被呼叫函式對形參的操作,只影響形參對應的位址空間,不影響原來函式中的變數的值,因為這兩個不是同乙個儲存空間。二 引用...