函数调用可以(而且只可以)得到一个返回值(即函数值),而运用指针变量作参数,可以得到多个变化了的值。
//例题10-4 输入a,b,c这3个整数,按大小顺序输出
#include<stdio.h>
int main()
{
void exchange(int *q1,int *q2,int*q3);
int a,b,c,*p1,*p2,*p3;
scanf("%d %d %d",&a,&b,&c);
p1=&a;
p2=&b;
p3=&c;
exchange(p1,p2,p3);
printf("\n%d %d %d\n",a,b,c);
return 0;
}
void exchange(int *q1,int *q2,int*q3)
{
void swap(int *pt1,int *pt2);//声明
if(*q1<*q2) swap(q1,q2); //note:顺序
if(*q1<*q3) swap(q1,q3);
if(*q2<*q3) swap(q2,q3);
}
void swap(int *pt1,int *pt2)
{
int tmp;
tmp=*pt1;
*pt1=*pt2;
*pt2=tmp;
}
//输入 5 9 4
//输出 9 5 4