C++语言程序设计

下面再举一例，输入a、b、c3个整数，按大小顺序输出，要求a为最小，c为最大。

| 例7-6

void swap(int *pt1,int *pt2)
{
int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
void exchange(int *q1,int *q2,int *q3)
{
if(*q1<*q2) swap(q1,q2);
if(*q1<*q3 swap(q1,q3);
if(*q2<*q3) swap(q2,q3);
}

void main()
{
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);
}

拿exchange函数中第一条if语句分析，如果a>b，调用函数swap，其中&a和&b是实参，swap函数通过中间变量temp交换*pt1和*pt2。因为:
*pt1=*(&a)=a
*pt2=*(&b)=b
实际上，通过中间变量temp交换a和b。