C 函式的傳值呼叫 指標呼叫 引用呼叫

2021-07-30 23:57:36 字數 1408 閱讀 9714

該方法把引數的實際值複製給函式的形式引數。在這種情況下,修改函式內的形式引數對實際引數沒有影響。

#include

using

namespace

std;

// 函式宣告

void swap(int x, int y);

int main ()

// 函式定義

void swap(int x, int y)

呼叫函式的時候,在函式內部開闢了兩個變數,x=a,y=b,然後對這兩個區域性變數進行操作,函式執行完畢之後隨即銷毀。

交換前,a 的值: 100

交換前,b 的值: 200

交換後,a 的值: 100

交換後,b 的值: 200

該方法把引數的位址複製給形式引數。在函式內,該位址用於訪問呼叫中要用到的實際引數。這意味著,修改形式引數會影響實際引數。

#include 

using

namespace

std;

// 函式宣告

void swap(int *x, int *y);

int main ()

// 函式定義

void swap(int *x, int *y)

int* x=&a, int* y=&b,此時x,y分別為a,b的位址,函式中交換了位址x,y對應的值,因而在函式外部相當於a,b的位址不變,交換了a,b的值。

交換前,a 的值: 100

交換前,b 的值: 200

交換後,a 的值: 200

交換後,b 的值: 100

該方法把引數的引用複製給形式引數。在函式內,該引用用於訪問呼叫中要用到的實際引數。這意味著,修改形式引數會影響實際引數。

#include 

using

namespace

std;

// 函式宣告

void swap(int &x, int &y);

int main ()

// 函式定義

void swap(int &x, int &y)

&x=a,&y=b,x,y分別是a,b的引用,也就是別名,也就是x和a,y和b是相同的東西,

x和a具有相同的位址相同的值,y和b具有相同的位址相同的值。因而在函式內部對變數的操作等價於在函式外部對變數的操作。

交換前,a 的值: 100

交換前,b 的值: 200

交換後,a 的值: 200

交換後,b 的值: 100

參考

傳值呼叫和引用呼叫

值呼叫是指當發生函式呼叫時候,給形參分配記憶體空間,並用實參來初始化形參 直接將實參的值傳遞給形參 這一過程是引數值的單向傳遞過程,一旦形參獲得了值,便於實參脫離了關係,此後無論形參發生了什麼變化,都不影響實參了.引用呼叫將引用作為形參,在執行主調函式中的呼叫語句時候,系統自動用實參來初始化形參.這...

引用呼叫和傳值呼叫

1.傳值呼叫又分為資料傳值呼叫和位址傳值呼叫。資料傳值呼叫方式是將實參的資料值傳遞給形參。實參和形參在棧空間內的位址不相同,改變形參值不影響實參值 位址傳值呼叫方式是將實參的位址值傳遞給形參,實參和形參在棧空間內共用同一位址,改變形參值就可改變實參值。2.引用呼叫是將實參變數值傳遞給形參,而形參是實...

C 之傳值呼叫和引用呼叫

如果希望函式能夠改變某變數的值,那麼相應的形參一定要是引用呼叫引數。因此必須在引數型別後面加上 符號。傳值呼叫形參只是乙個區域性變數。當一組資料需要多個函式處理時候,也要用引用呼叫。到目前為止我們一直使用傳值呼叫形參,函式呼叫裡的相應的形參可以是乙個變數,但函式只使用該變數的值,而且不能以任何方式改...