| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 975 人关注过本帖
标题:求大神指教,关于指针的
只看楼主 加入收藏
我想成为大神
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2014-9-21
收藏
得分:0 
回复 5 楼 erty1001
*a=*a^*b中的这个符号^什么意思啊。
你的程序改成我的考试题目,果然结果一样一样的。
那个,*a不是指针地址码?为什么不是a>b来比较呢。

[ 本帖最后由 我想成为大神 于 2014-9-21 21:27 编辑 ]
2014-09-21 21:25
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:0 
“中间是有错误,可是为什么我输入1 2 3 4后,输出的也是1 2 3 4; ”

首先你得保证程序是正确的,然后,再去讨论逻辑上的错误,否则,这是没有任何意义的!就好比如初生的婴儿,你得先让他学会走,然后才学会跑

我只指出你程序的错误,逻辑上的错误要靠你自己解决,而且我觉得你能够解决,因为这根本不是问题。

void fun(int *a,int *b,int *c,int *d)

{
    int *max;    //max,min均为野指针。这是一个很常见且又隐蔽的错误,同时也是一个很严重的错误,强烈建议你在定义时对指针初始化!
    int *min;
//1.想把程序变得简洁是很好的,但是有时候会好心办成坏事,如果你将下面几个语句分开写,或许就能发现你逻辑上的错误。
//2.概念上的不清晰,指针的值为地址,而你的原意是比较它们所指向的变量的值,是否要考虑在前面加上*。
         max=a>(b>(c>d?c:d)?b:(c>d?c:d))?a:(b>(c>d?c:d)?b:(c>d?c:d));
                 min=a<(b<(c<d?c:d)?b:(c<d?d:d))?a:(b<(c<d?c:d)?b:(c>d?c:d));
       if((max==a&&min==d)||(max==d&&min=a))  //此处同2,下面亦同
{
            *a=max;*b=b;*c=c;*d=min;
}
else {
           *b=a;*a=max;*c=d;*d=min;
}       //如果你将程序有条理的写出来,一定能发现这个错误

要记住:程序是写给别人看的,所以尽可能写的清晰一些

坚持----------------------------------唯一的道路
shit ! ! !
2014-09-21 22:08
追寻XT
Rank: 2
等 级:论坛游民
威 望:1
帖 子:37
专家分:32
注 册:2014-8-20
收藏
得分:0 
你只要分清 值交换,还是地址交换就行了。
2014-09-21 22:09
code_farmer
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:29
专家分:117
注 册:2014-4-21
收藏
得分:0 
回复 10 楼 我想成为大神
嗯嗯,多做做题,不懂就画画图,看看指针是怎么走的,熟能生巧
2014-09-22 12:46
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:0 
简单说说:
既然问了 我就随便说说: *a^*b 等价于 (*a)^(*b) 中间这个^是求异或,比较好用的运算,一个0,1位和1异或则取反,与0异或值不变。
并且有 a^b=b^a;   
       a^b^b=a;
 根据刚才这两个定律,例如我们想要交换a ,b 怎么办呢?
  答案是:设a初始是a0  b初始是b0
a=a^b;  //就是a = a0^b0
b=a^b;  //就是b= ( a0^b0)^b0= a0
a=a^b; // 就是a=( a0^b0 )^a0=b0

结果就互换了~!
2014-09-22 19:43
快速回复:求大神指教,关于指针的
数据加载中...
 
   



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

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