#include <stdio.h> //change函数 int change(int *q1,int *q2,int *q3) //定义change函数 使*q1 *q2 *q3指向主函数传来的地址值q1 q2 q3; { int swap(int *p1,int *p2); //声明swap函数 if(*q1<*q2) swap(q1,q2); if(*q1<*q3) swap(q1,q3); if(*q2<*q3) swap(q2,q3); //比较q1q2q3所指向的abc大小;调用swap函数 (将地址值传到swap) } //swap函数 int swap(int *p1,int *p2) //使 p1 p2 p3指向change传来的实参地址值q1 q2; { int temp; temp=*p1; *p1=*p2; *p2=temp; //操作*p1*p2比较 改变指针变量所对应的值; } //主函数 int main() { int a,b,c; //定义3个变量 int *q1,*q2,*q3; //定义三个指向整型变量的指针变量 printf("请输入要比较的三个数a b c/n"); //提示用户输入3个要比较的数 scanf("%d %d %d",&a,&b,&c); //输入 printf("a=%d/nb=%d/nc=%d/n",a,b,c); //输出一下 q1=&a; //q1存放a的地址; q2=&b; //q2存放b的地址; q3=&c; //q3存放c的地址; printf("/n比较前:a的地址=%d b的地址=%d c的地址=%d/n",q1,q2,q3); //输出此时abc的地址 change(q1,q2,q3); //调用change函数 (传去地址值) printf("/nMax=%d Mid=%d Min=%d/n",a,b,c); //输出比较后的顺序; printf("/n比较后:a的地址=%d b的地址=%d c的地址=%d/n",q1,q2,q3); printf("/n"); system("pause"); }