当前位置: 代码迷 >> C语言 >> 初学结构体的一个问题
  详细解决方案

初学结构体的一个问题

热度:127   发布时间:2007-07-03 18:00:57.0
初学结构体的一个问题
这个程序是谭浩强《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编辑过]

搜索更多相关的解决方案: 结构体  初学  

----------------解决方案--------------------------------------------------------
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];//这个又和上面的不同,是数组.这两个都是属于数组,只是前面属于字符串也就是字符数组。

----------------解决方案--------------------------------------------------------
看得出来,你是前面的课程没有消化就来看结构体,先回到前面学好函数,数组,指针,宏定义!!!

----------------解决方案--------------------------------------------------------

楼上的也说得对.谢谢


----------------解决方案--------------------------------------------------------

彻底无语,自己老实交代,从哪里拼凑来的代码
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();
}


----------------解决方案--------------------------------------------------------

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

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


----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
补一补基础知识吧,大哥
----------------解决方案--------------------------------------------------------
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 *);//这里的*,从来没遇到过.是什么意思?
这个是函数定义
表示这个函数没有返回值,调用时参数是个指向结构体的指针!!

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

----------------解决方案--------------------------------------------------------
  相关解决方案