C函式的實參與形參的輸出區別
阿新 • • 發佈:2019-01-23
#include <stdio.h>
int swap(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
printf("in the swap,a=%d,b=%d\n",a,b);
}
int main()
{
int a=2;
int b=5;
printf("a=%d,b=%d\n",a,b);
swap(a,b);
printf("after swap,a=%d,b=%d\n",a,b);
return 0;
}
將上述程式執行可以得到結果:
a=2,b=5
in the swap,a=5,b=2
after swap,a=2,b=5
由程式結果我們可以看出,swap函式完成的功能是將傳入的2個形參值進行對調,但是在主函式中,實參a為2,b為5,在進行swap函式後的實參輸出結果依舊為a=2,b=5,但是在swap函式中的輸出確實將形參a,b的值進行了對調。
由此可以得出一個結論,函式的形參只在呼叫時才分配空間,函式在main函式裡執行完畢後,形參分配的記憶體空間就被釋放掉了
但是,如果我們就是想要完成將2個實參a,b的值進行對調怎麼辦呢,這裡就要用到指標了,程式如下:
#include <stdio.h>
int swap(int *a1,int *b1)
{
int temp;
temp=*a1;
*a1=*b1;
*b1=temp;
printf("in the swap,a=%d,b=%d\n",*a1,*b1);
}
int main()
{
int a=2;
int b=5;
printf("a=%d,b=%d\n",a,b);
swap(&a,&b);
printf ("after swap,a=%d,b=%d\n",a,b);
return 0;
}
將上述程式進行編譯執行,得到的輸出結果為:
a=2,b=5
in the swap,a=5,b=2;
after swap,a=5,b=2;
該函式就完成了將實參進行對調的功能。