第11章 结构体、联合体与枚举类型 7
第11章 结构体、联合体与枚举类型
结构体类型是C语言允许用户定义的又一买 重要的构造数据类型。 7
结构体类型是C语言允许用户定义的又一 重要的构造数据类型
111结构体的概念 112结构体数组 113结构体指针 114链表 115联合体数据类型 116枚举数据类型 117自定义类型 7
11.1 结构体的概念 11.2 结构体数组 11.3 结构体指针 11.4 链 表 11.5 联合体数据类型 11.6 枚举数据类型 11.7 自定义类型
111结构体的概念 结构体类型是一种构造数据类型,是数 目固定,类型不同的若干有序数据项的集 合。每个数据项称为一个成员。每一个成 员可以是一个基本数据类型或者是一个构一 造类型。结构体数据类型具有很强的数据 描述能力,但〔语音中并不提供现成的结构 体类型。因此,用户在使用一个结构体类 型之前,必须先定义它,也就是要在程序 中构造所需要的数据类型。 7
11.1 结构体的概念 结构体类型是一种构造数据类型,是数 目固定,类型不同的若干有序数据项的集 合。每个数据项称为一个成员。每一个成 员可以是一个基本数据类型或者是一个构 造类型。结构体数据类型具有很强的数据 描述能力,但C语言中并不提供现成的结构 体类型。因此,用户在使用一个结构体类 型之前,必须先定义它,也就是要在程序 中构造所需要的数据类型
111结构体类型的定义 结构体类型定义的一般形式为: struct结构体类型名 类型标识符成员名1 类型标识符成员名2; 类型标识符成员名n; }; 7
11.1.1 结构体类型的定义 结构体类型定义的一般形式为: struct 结构体类型名 { 类型标识符 成员名1; 类型标识符 成员名2; 类型标识符 成员名n; };
例如,定义一个“学生信息”的结构体类型如下 struct student int nume char name[ 101 char sex: Int age; char addr 50; int score 7
例如,定义一个“学生信息”的结构体类型如下: struct student { int num; char name[10]; char sex; int age; char addr[50]; int score; };
1112结构体变量的定义、引用、初始化 1.结构体变量的定义 (1)先定义结构体类型,再定义结构体类型 变量。 这种定义的一般形式为: struct结构体类型名结构体变量名表; 如上面定义了“学生信息”的结构体类型 struct student后,就可以用它来定义结构体变 量。 7
11.1.2 结构体变量的定义、引用、初始化 1.结构体变量的定义 (1)先定义结构体类型,再定义结构体类型 变量。 这种定义的一般形式为: struct 结构体类型名 结构体变量名表; 如上面定义了“学生信息”的结构体类型 struct student后,就可以用它来定义结构体变 量
例如: struct student stul stu2 定义了stu和u2为 struct student类型的变量, 编译系统为变量sul与stu2分配存储空间时,其 存储格式与结构体类型 struct student所描述的关 保持一致,结构体中的各个成员按要求顺序存 放。每一个 truct student类型的变量占用的存 储单元为67个字节。 7
例如: struct student stul,stu2; 定义了stul和stu2为struct student类型的变量, 编译系统为变量 stul与stu2分配存储空间时,其 存储格式与结构体类型struct student所描述的 保持一致,结构体中的各个成员按要求顺序存 放。每一个struct student类型的变量占用的存 储单元为67个字节
(2)在定义结构体类型的同时定义结构体 变量。 这种定义的一般形式为 struct结构体类型名 类型标识符成员名1; 类型标识符成员名2; 类型标识符成员名n; }结构体变量名表; 7
(2)在定义结构体类型的同时定义结构体 变量。 这种定义的一般形式为: struct 结构体类型名 { 类型标识符 成员名1; 类型标识符 成员名2; 类型标识符 成员名n; } 结构体变量名表;
例如: struct student int num: char name 10l: char sex; Int age char addr50l; int score: 3stul, stu2; 这种定义与前面的定义功能相同,都是既定义了结构体类型 Istruct student,又定义了两个结构体变量stu1与stu2。 7
例如: struct student { int num; char name[10]; char sex; int age; char addr[50]; int score; }stu1,stu2; 这种定义与前面的定义功能相同,都是既定义了结构体类型struct student,又定义了两个结构体变量stu1与stu2