第八章结构体与共用体 枚举类型 2004年3月 河北建筑工程学院
第八章 结构体与共用体 枚举类型 河北建筑工程学院 2004年3月
迄今为止,我们已详细介绍了基本数据类型如整 型、实型、字符型等,也介绍了一种构造类型的数 据一数组,数组中的各元素是属于同一个类型的。 但在处理实际问题时,经常会遇到复杂的数据,只 有这些数据类型是不够的,还需要将不同类型的数 据组合成一个有机的整体,以便于引用。为了能把 这些有一定逻辑联系的数据组成一个整体,C++语 言提供了一种结构体数据类型本章主要介绍由不同 类型数据组成的构造类型的数据,包括结构体类型 共用体类型和枚举类
迄今为止,我们已详细介绍了基本数据类型如整 型、实型、字符型等,也介绍了一种构造类型的数 据—数组,数组中的各元素是属于同一个类型的。 但在处理实际问题时,经常会遇到复杂的数据,只 有这些数据类型是不够的,还需要将不同类型的数 据组合成一个有机的整体,以便于引用。为了能把 这些有一定逻辑联系的数据组成一个整体,C++语 言提供了一种结构体数据类型本章主要介绍由不同 类型数据组成的构造类型的数据,包括结构体类型 共用体类型和枚举类
8.1结构体类型 用途:把不同类型的数据组合成一个萋体自定 义数据类型 结构体是一种构造数据类型 例如:在指迷学生的基本情况时,一般要用到 学生的掌号、姓名、性别、年龄、成缋、家庭 住址等项。这些项都与某一学生相联系。见囝 8. 学号姓名性别年龄成绩地址 10000彤男 2190北京 图81学生的基本情况
8.1 结构体类型 用途:把不同类型的数据组合成一个整体自定 义数据类型 结构体是一种构造数据类型 例如:在描述学生的基本情况时,一般要用到 学生的学号、姓名、性别、年龄、成绩、家庭 住址等项,这些项都与某一学生相联系,见图 8.1。 100001 王彤 男 21 90 北京 学号 姓名 性别 年龄 成绩 地址 图8.1 学生的基本情况
可以看到学号(num)、姓名(mame、性 别(sex)、年龄age)、成绩( score)、家庭住址 adr)共同描述名为“王彤”的学生,如果将 num、name、sex、age、 score、addr分别定 义为互相独立的简单变量,则难以反映它们之间 的内在联系。应当把它们组织成一个组合项,在 个组合项中包含若干个类型相同或不同的数据 项。C十+语言允许用户指定这样一种数据结构, 称为结构体( structure)它相当于其它高级语 言中的“记录” 使用结构体类型之前,必须先对结构体的组 成进行描述这就是结构体类型的定义。结构体类 型的定义描述了组成结构体的成员以及每个成员 的数据类型
可以看到学号(num)、姓名(name)、性 别(sex)、年龄(age)、成绩(score)、家庭住址 (addr)共同描述名为“王彤” 的学生,如果将 num、name、sex、age、score、addr分别定 义为互相独立的简单变量,则难以反映它们之间 的内在联系。应当把它们组织成一个组合项,在 一个组合项中包含若干个类型相同或不同的数据 项。C++语言允许用户指定这样一种数据结构, 称为结构体(structure)它相当于其它高级语 言中的“记录” 使用结构体类型之前,必须先对结构体的组 成进行描述这就是结构体类型的定义。结构体类 型的定义描述了组成结构体的成员以及每个成员 的数据类型
结构体类型定义 合法标识符 可省:元名结构体 struct[结构体名 类型标识符成员名; 类型标识符成员名; 成员类型可以是 struct是关键字 基本型或构造型 不能省略
结构体类型定义 struct [结构体名] { 类型标识符 成员名; 类型标识符 成员名; ……………. }; 成员类型可以是 struct是关键字, 基本型或构造型 不能省略 合法标识符 可省:无名结构体
类型名,可以用来定 义变量 例 struct student int num; char name 20; char sex: int age; float score: 结构体类型定义描迷结构 char addr 30l; 的组织形式不分配内存 结构体类型定义的作用域
例 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; 结构体类型定义描述结构 的组织形式,不分配内存 结构体类型定义的作用域 类型名,可以用来定 义 变量
8.2结构体变量的定义 如果在程序中声明了某个结构体类型后,就可以使它来定 义变量,并且可以对变量进行初始化和使用相应的变量。 通常有三种形式来定义一个结构体类型变量。 1.先定义结构体类型,再定义结构体变量 今一般形式 struct结构体名 类型标识符成员名; 类型标识符成员名 struct结构体名变量名表列;
8.2 结构体变量的定义 如果在程序中声明了某个结构体类型后,就可以使它来定 义变量,并且可以对变量进行初始化和使用相应的变量。 通常有三种形式来定义一个结构体类型变量。 1.先定义结构体类型,再定义结构体变量 ❖一般形式: struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; …………….}; struct 结构体名 变量名表列;
例1 struct student int num char name 201; char sex? int agey float score char addr 30l; 9 struct student stul, stu2
例 1 struct student { int num; char name[20]; char sex; int age; float score; char addr[30];}; struct student stu1,stu2;
N 2#define sTudENT struct student STUDENT int num char name 201; char sex, int age, float score; char addr301; STUDENT stulstu2
例 2 #define STUDENT struct student STUDENT { int num; char name[20]; char sex; int age; float score; char addr[30]; }; STUDENT stu1,stu2;
2.定义结构体类型的同时定义结构体变量 今一般形式 struct结构体名 类型标识符成员名 类型标识符成员名 }变量名表列 例 struct student Int num, char name 20; char sex: int age; float score char addr 30i 3stul, stu2;
2.定义结构体类型的同时定义结构体变量 ❖一般形式: struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }变量名表列; 例 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }stu1,stu2;