| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 651 人关注过本帖
标题:麻烦帮我看下,我调试了好久就是得不到结果……
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:6 
你自己写的fun()函数,参数是什么,里面的m=a是干什么,自己应该清楚呀。a是指向STU数组的指针,m是指向STU元素的指针,你这样赋值的目的是什么呢?m已经变了性质,没意识到?

授人以渔,不授人以鱼。
2011-08-07 18:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你为什么好好返回所求序号不做,偏要把结果赋值到变量中通过参数返回呢?这种设计方式不是教坏人吗?我多少次说过慎用指针,不熟练乱用干什么,有很多种优良的设计途径,不是非用指针来炫耀不可的。

在这里,明显你的设计思路就不清晰,还要硬用指针,在自己到底想干什么都没弄清的情况下,调试三个钟都搞不好,正常啦,三天都搞不好。

[ 本帖最后由 TonyDeng 于 2011-8-7 18:35 编辑 ]

授人以渔,不授人以鱼。
2011-08-07 18:31
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
收藏
得分:0 
回复 11楼 TonyDeng
现在终于知道了错误所在,我把m=a换成*m=a[0],把m=&a[i]换成*m=a[i]就行了。
其实我一直对这方面概念不清晰,直到现在我才知道原来函数参数也有性质之分,一开始也只是想m只能承接一个数组元素的数据,然后就让它们的首地址相等,认为可以等价数组的第一个元素……我等下还会去看下结构体数组这节的概念。
为此,表示感谢,谢谢。


思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2011-08-07 18:38
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
收藏
得分:0 
回复 12楼 TonyDeng
其实,这是二级参考题上的要求,它要我设计这样的程序段,我也没办法,说实在的,我好讨厌指针,搞的我晕头转向,我也是迫不得已啊……

思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2011-08-07 18:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
孺子可教!

其实在这里,你要用m返回结果,不要用指针,应用“引用”,在调用点是&m,接收处仍然是m,这样对传入来的参数m作任何修改,都是直接修改原本。当要通过地址形式修改原变量的时候,优先用引用,这是比指针好的多得方法。不过,在这个具体例子中,本来确实不需要两个参数的,只要传入a[]数组就可以了,找出最值的位置序号,用函数返回值返回,更加直接。这些设计方法,都比你现在这个版本好。

授人以渔,不授人以鱼。
2011-08-07 18:45
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
收藏
得分:0 
嗯,谢谢夸奖。
其实我一般都是用你所说的第二种方法,如果要我编写,我会这样编写:
程序代码:
STU fun(STU a[])
{
    STU m=a[0];
    for(int i=1;i<N;i++)
        if(a[i].s>m.s)
            m=a[i];
        return m;
}

思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2011-08-07 18:54
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
收藏
得分:0 
回复 15楼 TonyDeng
但对于你说的第一种引用的方法,我还是要说不太懂
反正不管怎么说,我最多一天,我一定可以了解这种方法!谢谢哈。

思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2011-08-07 18:56
快速回复:麻烦帮我看下,我调试了好久就是得不到结果……
数据加载中...
 
   



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

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