5.3 C51的结构

前面介绍的数组常用来处理具有相同数据类型的一组数据。但是在实际的程序设计中,常遇到具有不同数据类型的一组数据。例如,在学生成绩统计表中包含姓名(字符型)、学号(整型或字符型)、年龄(整型)、性别(字符型)和成绩(浮点型)几项内容。由于这一组数据中的元素数据类型各不相同,而数组中各元素的类型和长度都必须一致,因此不能用一个数组来存放这一组数据。在这种情况下,C51提供了一种新的数据结构类型“结构”,它和数组、指针、联合等同属聚合数据类型,相当于其他高级语言中的记录类型。

5.3.1 结构的声明

结构是由不同数据类型的若干成员有序组合而成的集合。结构是一种聚合类型,结构中的每一个成员既可以是基本数据类型,也可以是聚合类型。和基本数据类型一样,在使用结构这种聚合数据类型前,必须先声明,声明结构的一般形式如下。


struct结构名

{

类型说明符成员名;

类型说明符成员名;

……

};


其中,struct为关键字,结构名是所要定义的结构的标识符,而不是变量名。类型说明符为每个结构成员的数据类型。构成结构的每个类型变量称为结构成员。需要注意的是,结构定义的最后“}”后一定要加上分号“;”,不能省略。

注意定义结构的最后(大括号后)必须要有分号,以标志标识结构定义语句结束。

结构的声明示例如下。


struct student//声明结构

{

int num;//学号

char name[20];//姓名

char sex[2];//性别

int age;//年龄

float score;//成绩

};//结构变量


本例中,声明了一个结构student。结构student由5个结构成员组成,第1个成员为num,整型变量;第2个成员为name,一维字符型数组;第3个成员为sex,一维字符型数组;第4个成员为age,整型变量;第5个成员为score,浮点型变量。

说明结构中的每个结构成员就像数组中数组元素一样,但是数组元素是以数组名加下标来访问的,而结构是以变量名来访问结构成员的。