| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 690 人关注过本帖
标题:初学结构体的一个问题
只看楼主 加入收藏
lifeng2007
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-4-27
收藏
 问题点数:0 回复次数:8 
初学结构体的一个问题
这个程序是谭浩强《C语言程序设计》结构体一章里面的。
题目为:有一个结构体变量stu,内含学生学号,姓名和平共处五项原则门课的成绩.
我不懂的写在旁边。帮我解释下,好吗?
#include <string.h>
#define FORMAT"%d\n%s\n%f\n%f\n%f\n"
struct students
{
int num;
char name[10];//[10]是长度吗?也可以当数组使用吧?
float score[3];//这个又和上面的不同,是数组.
};
main()
{
void print(struct students);//就是这里我搞不懂为何是这样.
struct students stu;
stu.num=123;
strcpy(stu.name,"li feng");
stu.score[0]=67.5;
stu.score[1]=50;
stu.score[2]=95;
print(stu);//不要第一行void print(struct students);就把print(stu);改为print struct students stu)为什么不可以?
}
void print(struct students stu)
{
printf(FORMAT,stu.num,stu.name,stu.score[0],stu.score[1],stu.score[2]);
getch();
}
还有FORMAT有哪些功能?

这个题还可以换一个做法:(有些地方不懂)
#define FORMAT"%d\n%s\n%f\n%f\n%f\n"
struct students
{
int num;
char name[20];
float score[3];
}stu={123,"li feng",60,80,70};
main()
{
void print(struct students *);//这里的*,从来没遇到过.是什么意思?
print(&stu);
}
void print(struct students *p)
{
printf(FORMAT,p->num,p->name,p->score[0],p->score[1],p->score[2]);
getch();
}

[此贴子已经被作者于2007-7-4 7:05:50编辑过]

搜索更多相关主题的帖子: 结构体 初学 
2007-07-03 18:00
huangfengchu
Rank: 1
等 级:新手上路
威 望:2
帖 子:274
专家分:0
注 册:2007-5-22
收藏
得分:0 
void print(struct students);//这里是声明函数部分,肯定不可以改成这样print struct students stu) 还有FORMAT有哪些功能?你不是在这里进行了宏定义吗?#define FORMAT"%d\n%s\n%f\n%f\n%f\n"char name[10];//[10]是长度吗?也可以当数组使用吧?float score[3];//这个又和上面的不同,是数组.这两个都是属于数组,只是前面属于字符串也就是字符数组。

深山苦学C语言,终年不见外面世界。
2007-07-03 18:15
卷入内核
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-7-2
收藏
得分:0 
看得出来,你是前面的课程没有消化就来看结构体,先回到前面学好函数,数组,指针,宏定义!!!
2007-07-03 18:23
lifeng2007
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-4-27
收藏
得分:0 

楼上的也说得对.谢谢

2007-07-03 20:26
huangfengchu
Rank: 1
等 级:新手上路
威 望:2
帖 子:274
专家分:0
注 册:2007-5-22
收藏
得分:0 

彻底无语,自己老实交代,从哪里拼凑来的代码
main()
{
void print(struct students *);//这里的*,从来没遇到过.是什么意思?
print(&stu);
void print(struct students *p)
{
printf(FORMAT,p->num,p->name,p->score[0],p->score[1],p->score[2]);
getch();
}


深山苦学C语言,终年不见外面世界。
2007-07-03 20:44
lifeng2007
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-4-27
收藏
得分:0 

哦,
main()
{
void print(struct students *);//这里的*,从来没遇到过.是什么意思?
print(&stu);
这里掉了一个 }
我没啊?那里是照书上打的

[此贴子已经被作者于2007-7-4 7:06:55编辑过]

2007-07-03 20:46
卷入内核
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-7-2
收藏
得分:0 

程序好像没有打对,别急,慢慢来,请万别心急,从基本数据类型学起吧,结构体只是把他们组合起来,就这么简单

2007-07-23 17:15
miaomiao0403
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-8-22
收藏
得分:0 
补一补基础知识吧,大哥
2007-07-23 17:41
jackys2006
Rank: 1
等 级:新手上路
帖 子:195
专家分:0
注 册:2006-3-10
收藏
得分:0 
char name[10];//[10]是长度吗?也可以当数组使用吧?
这里定义了一个字符串,字符串的长度最大可以为9

float score[3];//这个又和上面的不同,是数组.
这里定义了一个数组,数组的元素是浮点数类型,元素个数是3个

void print(struct students);//就是这里我搞不懂为何是这样.
这个是函数原型定义吧,搞不懂定义在main函数里面,高手指教
函数没返回值,参数是结构体

print(stu);//不要第一行void print(struct students);就把print(stu);改为print struct students stu)为什么不可以?
那怎么可以,void print(struct students);是定义函数; print(stu);是调用函数
print struct students stu这种方式是不能输出结构体的,因为结构体里面那么多不一样的数据类型,要一一标明

还有FORMAT有哪些功能?
FORMAT只是个宏定义,本身没有意义,

void print(struct students *);//这里的*,从来没遇到过.是什么意思?
这个是函数定义
表示这个函数没有返回值,调用时参数是个指向结构体的指针!!

你既然学结构体,怎么没学到这些内容呢???

2007-07-23 20:15
快速回复:初学结构体的一个问题
数据加载中...
 
   



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

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