C语言结构体定义

typedef struct student
{
int num;
struct student *next;
}student;
struct student
{
int num;
struct student *next;
};
这两种定义有什么区别?谢谢

C语言结构体定义:struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。

结构体是C语言中聚合数据类型(aggregatedatatype)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。

扩展资料

1、struct是声明结构体类型时必须使用的关键字,不能省略。“结构体”这个词是根据英文单词structure译出的。

2、structSTUDENT是定义的数据类型的名字,它向编译系统声明这是一个“结构体类型”,包括name、num、sex、age、score、addr等不同类型的项。

3、structSTUDENT与系统提供的int、char、float、double等标准类型名一样,都是数据类型,具有同样的作用,都是用来定义变量的。

参考资料来源:百度百科—结构体

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-01

  struct在C语言中是一个关键字,用于定义结构数据类型。


  问题中的两种定义的区别在于第一种是给student数据类型,重新定义了一个类型别名,而第二种则单纯的表示一种叫做student的数据结构类型。两者的主要区别在于后面直接定义变量时。如下代码,则可以直接在结构体后面定义一个zhang_san的结构体变量。

struct student
{
int num;
struct student *next;
}zhang_san;

  而第一种的定义,则会出现错误。

typedef struct student
{
 int num;
 struct student *next;
}student zhang_san;

  
扩展:

  “结构”是一种构造数据类型,现在一般叫做用户自定义数据类型,它是由若干“成员”组成的。 每一个成员可以是一个基本数据类型或者又是一个构造类型。 结构即是一种“构造”而成的数据类型, 那么在说明和使用之前必须先定义它,也就是构造它。如同在说明和调用函数之前要先定义一样。


  定义一个结构的一般形式为:

struct结构名
{
//成员表列
};


  成员表由若干个成员组成, 每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:“类型说明符 成员名;”。成员名的命名应符合标识符的书写规定。例如:

struct stu
{
    int num;
    char name[20];
    char sex;
    float score;
};


  在这个结构定义中,结构名为stu,该结构由4个成员组成。 第一个成员为num,整型变量;第二个成员为name,字符型数组;第三个成员为sex,字符型变量;第四个成员为score,浮点型变量。 应注意在括号后的分号是必不可少的。

本回答被网友采纳
第2个回答  推荐于2017-09-19
第二个struct student是定义了一个student结构体,这个明白吧。

第一个是用typedef把struct student这个结构体类型名字重新定义为student,也就是说struct student和student表示同一个事物,都是一个类型的标识符,比如 typedef int zhengshu; 就是你把整型int重命名为zhengshu,下面定义:int i; 和 zhengshu i; 两句就是等价的了本回答被提问者采纳
第3个回答  2021-12-20
【C语言结构体】定义是结构体是一种构造数据类型(也称复杂数据类型),由若干不同类型的变量(数据)组成。每个变量都是结构体的成员(member),每个成员可以是基本数据类型,也可以是构造类型。

1、结构变量的使用
结构是一个新的数据类型, 因此结构变量也可以象其它类型的变量一样赋值、 运算,不同的是结构变量以成员作为基本变量。结构成员的表示方式为: 结构变量,成员名。
2、结构数组和结构指针
结构是一种新的数据类型, 同样可以有结构数组和结构指针。结构指针是指向结构的指针。它由一个加在结构变量名前的"*" 操作符来定义。
使用结构指针对结构成员的访问,与结构变量对结构成员的访问在表达方式上有所不同。结构指针对结构成员的访问表示为:结构指针名->结构成员,其中"->"是两个符号"-"和">"的组合,好象一个箭头指向结构成员。需要指出的是结构指针是指向结构的一个指针,即结构中第一个成员的首地址,因此在使用之前应该对结构指针初始化,即分配整个结构长度的字节空间。

想了解更多有关C语言的详情,推荐咨询达内教育。达内教育已从事19年IT技术培训,累计培养100万学员,并且独创TTS8.0教学系统,1v1督学,跟踪式学习,有疑问随时沟通;自主研发的26大课程体系更是紧跟企业需求,企业级项目,课程穿插大厂真实项目讲解,对标企业人才标准,制定专业学习计划,囊括主流热点技术。感兴趣的话点击此处,免费学习一下
第4个回答  2008-12-09
第一种是定义一个结构体并取个student结构体名,下次定义结构体是:
只要:student <标识符>; 乳student stu;
而第二种:必须这样定义:struct student stu;

参考资料:自己的心的--from chaohu college

相似回答