1. 程式人生 > >通過傳遞地址值在被調函式中直接改變呼叫函式中的變數的值

通過傳遞地址值在被調函式中直接改變呼叫函式中的變數的值

  我們知道形參值的改變並不能改變對應實參的值,把資料從被呼叫函式返回到呼叫函式的唯一途徑是通過return語句返回函式值,這就限定了只能返回一個數據。但是通過傳送地址值,可以在被呼叫函式中對呼叫函式中的變數進行引用,這也就使得通過改變對應實參的值有了可能。利用此形式就可以把兩個或兩個以上的資料從被呼叫函式返回到呼叫函式。下面以傳送地址的方式改變兩個數的值。

題目:編寫一個swap函式,把主函式中的變數a和b中的資料進行交換。

程式碼:

#include"stdio.h"

int main()
{
int swap(int *p1,int *p2);
int *p1,*p2,a,b;
printf("請輸入兩個實數:\n");
scanf("%d%d",&a,&b);
p1=&a;
p2=&b;
swap(p1,p2);
printf("%2d%2d\n",a,b);
return 0;
}
int swap(int *p1,int *p2)
{
int t;
if(*p1<*p2)
{
t=*p1;
*p1=*p2;
*p2=t;
}
return 0;

}