| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 481 人关注过本帖
标题:为什么不能用交换指针指向的方式比较大小?
只看楼主 加入收藏
yuyangtian1000
该用户已被删除
收藏
 问题点数:0 回复次数:3 
为什么不能用交换指针指向的方式比较大小?
提示: 作者被禁止或删除 内容自动屏蔽
搜索更多相关主题的帖子: 指针 
2008-08-21 20:41
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
程序代码:
#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();
}
2008-08-21 21:57
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
收藏
得分:0 
呵呵~~顶一个~~
2008-08-21 22:34
yt414204458
Rank: 2
等 级:论坛游民
帖 子:260
专家分:55
注 册:2008-3-1
收藏
得分:0 
广陵绝唱分析的很仔细啊,呵呵

一切从爱C开始
2008-08-22 22:04
快速回复:为什么不能用交换指针指向的方式比较大小?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031923 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved