c语言中的结构体可以一边定义一边用吗? 5
#defineNULL0structstudent{longnum;floatscore;structstudent*next;就是这里student结构体还没有定义完怎...
#define NULL 0
struct student
{
long num;
float score;
struct student *next; 就是这里student结构体还没有定义完怎么可以直接用?是什么效果?
};
main()
{
struct student a, b, c, *head, *p;
a.num=99101;
a.score=89.5;
b. num=99103;
b.score=90;
c.num=99107 ;
c.score=85;
head=&a;
a.next=&b;
b.next=&c;
c.next=NULL;
p=head;
do
{
printf("%ld %5.1f\n",p->num,p->score);
p=p->next;
}
while(p!=NULL);
} 展开
struct student
{
long num;
float score;
struct student *next; 就是这里student结构体还没有定义完怎么可以直接用?是什么效果?
};
main()
{
struct student a, b, c, *head, *p;
a.num=99101;
a.score=89.5;
b. num=99103;
b.score=90;
c.num=99107 ;
c.score=85;
head=&a;
a.next=&b;
b.next=&c;
c.next=NULL;
p=head;
do
{
printf("%ld %5.1f\n",p->num,p->score);
p=p->next;
}
while(p!=NULL);
} 展开
展开全部
正如楼上所说,C中结构体是可以嵌套使用的。简单理解,编译器在程序头遇见了
struct student
{
};
就会默默的告诉自己,现在除了int啊,float啊,又多了一个生命,哦不,声明叫struct student,然后编译器再去看括号内的东西
long num;
float score;
struct student *next;
前两个不用多说了,是long型和float型,编译器都认得,突然看见了struct student *next;然后编译器想起来是刚刚多的一个小伙伴。
struct student *next;
是一个指针类型,指向struct student 。
展开全部
你写的就是一个超简单的单向链表么。
肯定没有问题的,结构体本来就有嵌套一说。就是结构体内可以嵌套结构体。嵌套自己也是嵌套么。
struct student *next;就是定义一个指针,指向的类型就是struct student这种类型。你后来不也把这个next指向了下一个结构体指针么。
再细说下吧。
struct student
{
long num;
float score;
struct student *next; 就是这里student结构体还没有定义完怎么可以直接用?是什么效果?
};
这个就是说,你定义了一个结构体类型,就是struct student,和int、char都是一个意思,可以用来定义一个变量,也就是结构体变量。
只不过,定义的这个结构体变量中,又有好多个其他类型的变量。这些变量里,可以有int、char等,也可以有其他类型的结构体,当然,也可以有自己类型的结构体。
肯定没有问题的,结构体本来就有嵌套一说。就是结构体内可以嵌套结构体。嵌套自己也是嵌套么。
struct student *next;就是定义一个指针,指向的类型就是struct student这种类型。你后来不也把这个next指向了下一个结构体指针么。
再细说下吧。
struct student
{
long num;
float score;
struct student *next; 就是这里student结构体还没有定义完怎么可以直接用?是什么效果?
};
这个就是说,你定义了一个结构体类型,就是struct student,和int、char都是一个意思,可以用来定义一个变量,也就是结构体变量。
只不过,定义的这个结构体变量中,又有好多个其他类型的变量。这些变量里,可以有int、char等,也可以有其他类型的结构体,当然,也可以有自己类型的结构体。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哪怕还没有声明struct student,也照样可以使用struct student *next;因为编译器完全可以识别出这是指向结构体的指针,但是只有定义了结构体student之后,才可以进行解引用操作如*next,即next的用处是极度受限的。不过只要struct student的定义完成(遇到对应的右大括号),这样的限制也就消失,在后面的代码中完全可以正常的使用……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询