C語言中函式引數的傳遞的三種形式

2021-06-21 04:25:25 字數 1652 閱讀 6151

下面用這三種方式來實現兩個變數值的對調。**一為值傳遞,**二為位址傳遞,**三為引用傳遞。 

示例**一(該方法並不能實現兩個變數值的對調): 

void exchg1(int x, int y) 

int temp; 

temp = x; 

x = y; 

y = temp; 

printf("x = %d, y = %d\n", x, y); 

int main() 

int a = 4,b = 6; 

exchg1(a, b); 

printf("a = %d, b = %d\n", a, b); 

return 0; 

輸出的結果為: 

x = 6, y=4. 

a = 4, b=6. 

在呼叫函式exchg1時,進行的只是簡單地值傳遞,只是把a、

b的值分別賦值給了x、

y,之後在

exchg1

函式體內再也沒有對a、

b進行任何操作了。交換的只是x、

y變數的值,對變數a、

b的值沒有影響。所以呼叫

exchg1

後變數a、b

的值並沒有交換。

示例**二: 

void exchg2(int *px, int *py) 

int temp = *px; 

*px = *py; 

*py = temp; 

printf("*px = %d, *py = %d.\n", *px, *py); 

int main() 

int a = 4; 

int b = 6; 

exchg2(&a, &b); 

printf("a = %d, b = %d.\n", a, b); 

return 0; 

輸出的結果為: 

*px=6, *py=4. 

a=6, b=4.

在呼叫exchg2函式時,進行的是位址傳遞,是把變數a、

b的位址分別賦值給了指標變數px、

py,這時對

*px、

*py的操作也就是對a、

b變數本身的操作了。所以,交換

*px、

*py的值也就是交換變數a、

b的值,呼叫

exchg2

後,變數a、

b的值交換。

示例**三: 

void exchg3(int &x, int &y) 

int temp = x; 

x = y; 

y = temp; 

printf("x = %d,y = %d\n", x, y); 

int main() 

int a = 4; 

int b = 6; 

exchg3(a, b); 

printf("a = %d, b = %d\n", a, b); 

return 0; 

輸出的結果為: 

x=6, y=4. 

a=6, b=4. 

在呼叫exchg3函式時,進行的是引用傳遞, 是將a、b分別代替了x、y,也就是x、y分別引用了a、b變數。這樣函式裡面操作的其實就是實參a、b本身了,所以呼叫exchg3後,變數a、b的值交換。

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

煙台大學計算機與控制工程學院 檔名稱 test.cpp 作 者 朱國榮 完成日期 2015年9月11日 版 本 號 vc6.0 問題描述 交換a和b的值。輸入描述 兩個整數,分別為2和3。程式輸出 交換後的兩個數,輸出3和2.include void myswap int p1,int p2 2 引...

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

c語言中函式引數傳遞的三種方式 1 傳值,就是把你的變數的值傳遞給函式的形式引數,實際就是用變數的值來新生成乙個形式引數,因而在函式裡對形參的改變不會影響到函式外的變數的值。2 傳址,就是傳變數的位址賦給函式裡形式引數的指標,使指標指向真實的變數的位址,因為對指標所指位址的內容的改變能反映到函式外,...

C語言中函式引數傳遞的三種方式 x, x, x

includevoid myswap1 int x,int y void myswap2 int p1,int p2 void myswap3 int x,int y intmain 在第乙個程式中,傳值不成功的原因是指在形參上改變了數值,沒有在實參上改變量值。在第二個程式中,傳位址成功的原因利用指...