为什么不能用交换指针指向的方式比较大小?
提示: 作者被禁止或删除 内容自动屏蔽
#include <stdio.h> void main() { int a,b,c,*f,*p,*p1,*p2; scanf("%d%d%d",&a,&b,&c); /* 3,1,2 */ p=&a; /* 3 */ p1=&b; /* 1 */ p2=&c; /* 2 */ /* if(a>b) {f=p;p=p1;p1=f;} ----------交换后p=b=1,p1=a=3 if(a>c) {f=p;p=p2;p2=f;}---------a依然大于c,所以交换后p=c=2,p2=b=1 if(b>c) {f=p1;p1=p2;p2=f;} -----b不大于c,所以这里不用交换 -------------------------------------------------------------------- 现在看看指向。p=c=2,p1=a=3,p2=b=1。所以输出当然是2 3 1 printf("%d,%d,%d",*p,*p1,*p2); getch(); ****************************************************************************** 所以这么比较是不对的,下面更改一下就可以了。 *******************************************************************************/ p=&a; p1=&b; p2=&c; if(*p>*p1) {f=p;p=p1;p1=f;} if(*p>*p2) {f=p;p=p2;p2=f;} if(*p1>*p2) {f=p1;p1=p2;p2=f;} printf("%d,%d,%d",*p,*p1,*p2); getch(); }