C語言的傳值與傳址調用
傳值調用並不能改變兩個變量的值,而傳址能。
為什么,因為,傳值調用,僅僅是在函數內,調換參數的值。
而地址所指向的值,改變的不僅僅是函數內,函數外也改變。
請看代碼:
這里還要注意:通常我們不會返回局部變量的地址.
1 #include <stdio.h> 2 3 void swap_value(int x,int y) 4 { 5 int temp; 6 temp = x; 7 x = y; 8 y = temp; 9 printf("傳值函數內的輸出 %d %d \n",x,y); 10 } 11 12 void swap_address(int *x,int *y) 13 { 14 int temp; 15 temp = *x; 16 *x = *y; 17 *y=temp; 18 printf("傳址函數內的輸出 %d %d \n",*x,*y); 19 } 20 21 int main(int argc, char *argv[]) 22 { 23 int x = 10; 24 int y = 0; 25 26 printf("x y \n"); 27 printf("初值 %d %d \n",x,y); 28 //傳值子程序調用(交換xy) 29 swap_value(x,y); 30 printf("傳值函數外調用 %d %d \n",x,y); 31 32 //傳地址字程序調用(交換x,y) 33 swap_address(&x,&y); 34 printf("傳址函數外調用 %d %d \n",x,y); 35 return 0; 36 }