我们知道形参值的改变并不能改变对应实参的值,把数据从被调用函数返回到调用函数的唯一途径是通过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;
}