第7章 结构体
第7章 结构体
7.1 结构体类型定义与结构体变量
7.2 结构体数组及指向结构体的指针变量
7.3 链表
7.4 共用体
7.5 典型例题精讲
第7章 结构体
7.1 结构体类型定义与结构体变量
7.1.1 结构体类型的定义
在数据的处理中,一组数据往往具有不同的数据类型。
例如在学生登记表中,姓名为字符数组型,年龄为整型,性
别为字符型,而成绩可为整型或实型;显然不能使用一个数
组来存放这组数据,因为数组中各元素的类型必须一致。为
了解决这个问题,C语言给出了一种新的构造数据类型——
结构体类型,它相当于其他高级语言中的记录类型。
第7章 结构体
结构体类型是一种构造类型,即将其他数据类型组合
在一起构造成一个结构体类型。因此,结构体类型是由若干
成员组成的,每一个成员可有不同的名字及数据类型。与数
组类似的是,结构体也是一些相关数据的集合;但与数组不
同的是,结构体中各成员的数据类型可以不同。结构体类型
既然是一种构造类型,也即C语言并无像int等类型那样事先
构造好的结构体类型,因此在使用之前必须先定义结构体类
型,然后才可能像int等类型一样,用该结构体类型来定义所
需要的结构体变量。
第7章 结构体
一个结构体类型定义的一般形式为:
struct 结构体名
{
结构体成员表;
};
第7章 结构体
其中,struct是关键字,称为结构体定义标识符,结构
体名是结构体类型标志,struct与结构体名一起构成了一个新
的类型名。花括号“{}” 内的结构体成员表由若干个成员组成,
每个成员都是该结构体的一个组成部分,并且对每个成员必
须进行类型说明,其形式为:
类型标识符 成员名;
结构体名和成员名的命名应符合标识符的书写规定。
例如,描述学生登记表的结构体类型定义如下:
第7章 结构体
struct student
{
char name[20];
int age;
char sex;
int math,phys,english;
float average;
};
第7章 结构体
其中,student是一个自定义的结构体名,它与struct一
起构成了一个新的类型名(准确地说是一个新的结构体类型
名) 。此后就可以像使用int、char和float等简单类型名一样使
用struct student这一新类型名了,而name 、age、sex、math 、
phys 、english和average则是该结构体中的成员。
第7章 结构体
在以往的变量定义中,各个变量之间彼此相互独立,没
有任何内在的联系。而结构体类型却不同,如上述结构体类
型定义就