为什么不能用交换指针指向的方式比较大小?
提示: 作者被禁止或删除 内容自动屏蔽
程序代码:#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();
}