构造数据类型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
引用结构体成员变量
在实际使用中,需要对其成员变量进行引 用。一般来说,如果已定义了一个结构体 变量和一个指向该结构体的指针变量,则 可用以下三种形式来引用结构体变量中的 成员:
结构体变量名 . 成员名 指针变量名成员名
(*指针变量名). 成员名
其中,结构体变量名也可以是已定义的结 构体数组的数组元素,指针变量名为定义 的同一结构类型的指针变量,并使该指针
共用体
使几个不同的变量共占同一段内存的结构, 称为“共用体”类型的结构。在有些参考 资料上,共用体类型也称为联合类型 (Union)。
共用体类型的说明与结构体类型说明方式 完全相同,不同的是,结构体变量中的成 员各自占有自己的存储空间,而共用体变 量中的所有成员占有同一个存储空间。因 此,说明一个共用体的语法格式如下所示:
struct 结构体标识符 { 成员变量列表; … };
结构体定义示例
例如,为了描述上一小节中包含学号、姓 名、性别、年龄等信息的学生,可以定义 如下的自定义数据类型struct Student。
struct Student { int Code;
//学号 char Name[20];
//姓名 char Sex;
一般来说,枚举类型的定义的语法描述如 下:
类型重定义typedef
❖ 为了解决用户自定义数据类型名称的需 求,C++中引入类型重定义语句typedef, 可以为数据类型定义新的类型名称,从 而丰富数据类型所包含的属性信息。
❖ 在C++中,类型重定义typedef的一般语 法描述如下:
❖ typedef 类型名称 类型标识符;
❖ struct 位域结构名
❖{
综合练习
根据用户输入的学生数目,给出用户输入 学生学号、姓名、成绩等输入提示,用户 输入完成后给出输入的各项成绩和平均分。
思考和习题
在C++中,除了基本数据类型之外,构造 类型主要有哪几种?
在完成一个结构体定义之后,就可以像定 义基本数据类型变量一样,定义结构体类 型的变量和数组了。一般来说,结构体类 型变量的定义可以通过如4种方式完成, 分别是哪4种?
在实际程序中,如何引用结构体变量? 结构体变量作为函数参数时,如何进行参
数传递? 共用体在实际程序中如何使用?
union 共用体标识符
{
ห้องสมุดไป่ตู้
引用共用体成员变量
与结构体成员变量的引用类似,定义了共 用体变量和指向该共用体的指针变量后, 共用体变量中每个成员的引用也可以使用 以下三种形式之一:
共用体变量名.成员名 指针变量名-->成员名 (*指针变量名).成员名
枚举
在日常生活中,会遇到很多集合类问题, 其所描述的状态为有限几个,例如比赛的 结果只有输和赢两种状态,一周有7天, 共7个状态。在计算机中表述这些信息, 需要定义一组整型常量,但是这些常量虽 然在表达了同一类型的信息,但是在语法 上是彼此孤立的个体,不是一个完整的逻 辑整体。因此,C++中引入了枚举类型来 将这些常量融合成一个整体。
课程内容安排
结构体 共用体 枚举 类型重定义typedef 位域 综合练习 思考和习题
结构体
在C++中,结构体是一种可以由程序员根 据实际情况来自己构造的一种新的数据类 型,结构体类型的数据由若干称为“成员” 的数据组成,每一个成员既可以是一个基 本数据类型的数据,也可以是另一个构造 类型的数据。
结构体
例如,针对上面描述一个同学所需的各种 信息,可以定义一个结构体,其包括学号、 姓名、性别、年龄、成绩、班级等信息, 如图9-1所示。
结构体类型说明
作为一种自定义的数据类型,在使用结构体之前,必须完 成其定义。与定义基本数据类型一样,定义结构体也需要 一个关键字,定义结构体使用的是struct关键字。一般来说, 说明结构体类型的语法格式如下:
位域
❖ 有些信息在存储时,并不需要占用一个 完整的字节,而只需占几个或一个二进 制位。例如在存放一个标志时,只有0 和1两种状态,用一位二进位即可。为 了节省存储空间,并使处理简便,C++ 又提供了一种数据结构,称为“位域”。
定义位域变量
❖ 所谓位域是把一个字节中的二进位划分 为几个不同的区域,并说明每个区域的 位数。每个域有一个域名,允许在程序 中按域名进行操作。这样就可以把几个 不同的对象用一个字节的二进制位域来 表示。位域的定义和位域变量的说明与 结构定义类似,其形式如下: