| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 859 人关注过本帖
标题:结构体定义的问题
只看楼主 加入收藏
kajj_0321
Rank: 2
等 级:论坛游民
帖 子:47
专家分:93
注 册:2013-10-23
收藏
得分:0 
如果你那样写的话,你可以把juxing结构中的每个数据都打印出来看看。。你获取的值队不对

kajj->1314 努力每一天。
2014-06-20 11:42
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:4 
struct rect makerect(struct point pt1,struct point pt2,struct point pt3,struct point pt4,struct rect screen)//定义//
{
    screen.pt1=pt1;
    screen.pt2=pt2;
    screen.pt3=pt3;
    screen.pt4=pt4;
}
改变的是形参的值

总有那身价贱的人给作业贴回复完整的代码
2014-06-20 11:44
kajj_0321
Rank: 2
等 级:论坛游民
帖 子:47
专家分:93
注 册:2013-10-23
收藏
得分:0 
函数如果不用返回值就最好定义成void型,把矩形改成全局的变量应该就可以了

kajj->1314 努力每一天。
2014-06-20 11:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你是不是在用旧式的TC编译器?makerect()函数没有返回。

授人以渔,不授人以鱼。
2014-06-20 11:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
事实上你这个程序不用这样写的,绕大圈了。

授人以渔,不授人以鱼。
2014-06-20 11:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
结构体,直接对字段赋值就可以了。

struct _Point
{
    double x;
    double y;
};
_Point p1 = { 1.0, 2.0 };
_Point p2 = { 3.0, 4.0 };

像上面这样,无需写makepoint()函数。若不用上面的初始化方式,可以这样:

_Point p1, p2;
p1.x = 1.0;
p1.y = 2.0;
p2 = p1;

类似rect结构也是这般用法即可。

在你的makerect()函数中,当screen不用传址方式时,省略掉这个参数,直接在函数中return一个struct rect的局部变量即可。

[ 本帖最后由 TonyDeng 于 2014-6-20 12:13 编辑 ]

授人以渔,不授人以鱼。
2014-06-20 12:10
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
顺便说一下,可以使用C++编译器写C程序,充分利用C++的优秀语法,尽管不是写C++程序,但良好的语法是可以用的,比如直接用bool内置类型,无需#include什么标准头文件,C++的bool是语言内置的真正逻辑类型,不是用宏欺骗编译器得来的伪类型。并非说用了C++语法特性就是C++,要从本质上看,其实很多人写的“C++程序”实际上是C程序。

所以,如果你用C++编译器,那么你的程序中,除了在定义struct的时候写出struct关键字,后面的部分都不用再写,把结构体类型当普通的数据类型一样用(这就是C++的目的,不用像C那样带着struct这种丑陋的尾巴宣示一个数据类型是另类的,int是类型,point也是类型,rect也一样是类型,它们的本质和用法都一样)。这样,makerect()函数的定义,就不必重复敲击struct单词那么多次,那很难看。

读书和学习,最重要的是学会守原则,但不是守规矩。不必纠缠于某些根本不是问题的“问题”。在某些编译器上写void main(void),不等于你不懂换个编译器的时候把它改成int main(void),知道在什么时候做对的事,比只知道墨守成规强。

[ 本帖最后由 TonyDeng 于 2014-6-20 12:34 编辑 ]

授人以渔,不授人以鱼。
2014-06-20 12:23
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
楼主的代码,是C++等面向对象语言构造类型函数的思路,当需要隐藏类型内部字段时,的确要写这些函数,但矛盾的是,最终的代码又不是全面采用C++语法,成了四不像。

授人以渔,不授人以鱼。
2014-06-20 12:43
快速回复:结构体定义的问题
数据加载中...
 
   



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

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