《第9章构造数据类型.ppt》由会员分享,可在线阅读,更多相关《第9章构造数据类型.ppt(15页珍藏版)》请在三一文库上搜索。
1、第9章 构造数据类型,杨章伟 e-mail:,课程内容安排,结构体 共用体 枚举 类型重定义typedef 位域 小结 习题,结构体,结构体是一种可以由程序员根据实际情况来自己构造的新的数据类型,结构体类型的数据由若干称为“成员”的数据组成,每一个成员既可以是一个基本数据类型的数据,也可以是另一个构造类型的数据。,结构体类型说明,一般来说,说明结构体类型的语法格式如下: struct 结构体标识符 成员变量列表; ; 例如,为了9.1.1节中包含学号、姓名、性别、年龄等信息的学生,可以定义如下的自定义数据类型struct Student。 struct Student int Code; /学
2、号 char Name20; /姓名 char Sex; /性别 int Age; /年龄 ;,定义结构体类型变量,在完成一个结构体定义之后,就可以像定义基本数据类型变量一样定义结构体类型的变量和数组了。一般来说,结构体类型变量的定义可以通过如下4种方式完成。 先定义结构体类型再单独进行变量定义 紧跟在结构体类型说明之后进行定义 在说明一个无名结构体类型的同时直接进行定义 使用typedef说明一个结构体类型名后再用新类型名来定义变量,引用结构体成员变量,前面介绍过一个结构体变量中包括一个或多个成员变量,在实际使用中,就需要对其成员变量进行引用。一般来说,如果已定义了一个结构体变量和一个指向该
3、结构体的指针变量,则可用以下三种形式来引用结构体变量中的成员: 结构体变量名 . 成员名 指针变量名成员名 (*指针变量名). 成员名,共用体,在具体的程序设计中,有时需要将几种不同类型的变量存放到同一段单元中,或者说,需要使几个不同的变量共占同一段内存。在C+中,提供了这样一种类型结构,即共用体。在有些参考资料上,共用体也称为联合(Union)。 共用体类型的说明与结构体类型说明方式完全相同。不同的是,结构体变量中的成员各自占有自己的存储空间,而共用体变量中的所有成员占有同一个存储空间。 union 共用体标识符 成员变量列表; ;,枚举,在日常生活中,会遇到很多集合类问题,其所描述的状态为
4、有限几个,例如比赛的结果只有输和赢两种状态,一周有7天,共7个状态。在计算机中表述这些信息,需要定义一组整型常量,但是这些常量虽然在表达了同一类型的信息,但是在语法上是彼此孤立的个体,而不是一个完整的逻辑整体。 。,定义枚举类型,一般来说,枚举类型的定义的语法描述如下: enum 枚举标识符常量列表; 其中,参数说明如下。 enum关键字:为系统关键字,表示定义枚举类型。 枚举标识符:为一个遵循变量的命名规则的标识符。 常量列表:常量列表包含该枚举类型的值,每个枚举常量之间通过逗号分割。 例如,在实际程序需要描述上、下、前、后、左和右的6个方位,那么可定义枚举类型enum Direction,
5、如下所示: enum Direction up,down,before,back,left,right;,类型重定义typedef,在现实生活中,信息的概念可能是长度、数量和面积等。在C+中,信息被抽象为int、float和double等基本数据类型。从基本数据类型名称上,不能够看出其所代表的物理属性,并且int、float和double为系统关键字,不可以修改。为了解决用户自定义数据类型名称的需求,C+中引入类型重定义语句typedef,可以为数据类型定义新的类型名称,从而丰富数据类型所包含的属性信息。 在C+中,类型重定义typedef的一般语法描述如下: typedef 类型名称 类型标
6、识符;,位域,在实际的程序设计中,有时需要存储少量的信息,这些信息并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如,在存放一个标志时,只有0和1两种状态,用一个二进位即可。如果给其分配一个字节的空间,便浪费了存储空间。因此,C+引入了位域这一数据类型。 所谓位域是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。,定义位域变量,位域的定义和位域变量的说明与结构定义类似,其形式如下: struct 位域结构名 位域列表 ; 其中,位域列表的形式为: 类型说明符 位域名:
7、位域长度 例如,下面语句定义了一个位域abc,其包含3个位域成员a、b和c。 struct abc int a:8; int b:2; int c:6; ;,本章重点讲解了C+中的构造数据类型。C+中,结构体、共用体和枚举类型是使用较多的构造数据类型。其中,结构体类型是一种复杂而灵活的构造数据类型,它可以将多个相互关联,但类型不同的数据项作为一个整体进行处理。在定义结构体变量时,每一个成员都要分配空间存放各自的数据。共用体是另一种构造数据类型,但在定义共用体变量时,只按占用空间最大的成员来分配空间,在同一时刻只能存放一个数据成员的值。结构体和共用体变量的定义都有三种形式,可以将类型的说明和变量的定义分开、结合或不给出类型名只定义变量。读者应重点掌握结构体、共用体和枚举的变量定义和引用方法,对于位域,做简单了解即可。,小结,1编写一个C+程序,声明一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒,提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。 2编写一个C+程序,定义一个联合类型,其成员为整型变量i,单精度浮点型变量f和双精度浮点型变量d,声明一个联合变量和指针,给该联合类型的成员变量赋值,最后输出到屏幕。,习题,习题,3. 编写一个程序,根据用户输入的学生数目,给出用户输入学生学号、姓名、成绩等输入提示,用户输入完成后给出输入的各项成绩和平均分,
链接地址:https://www.31doc.com/p-3436198.html