下面用這三種方式來實現兩個變數值的對調。**一為值傳遞,**二為位址傳遞,**三為引用傳遞。
示例**一(該方法並不能實現兩個變數值的對調):
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 在第乙個程式中,傳值不成功的原因是指在形參上改變了數值,沒有在實參上改變量值。在第二個程式中,傳位址成功的原因利用指...