资源预览内容
第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
第9页 / 共29页
第10页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第 章 结构体、共同体和 枚举类型 Date1Visual C+程序设计结构体 Date2Visual C+程序设计数组中的每一个元素属于同一种数据类型,利 用数组处理大量的同类型 数据是很方便的。但是 在实际应用中,常常需要把不同类型而关系又非常 密切的数据组织在一起,形成一个整体,以便于统 一管理。 一种称为结构体的数据类型,可以用来描述这 种类型的数据集。结构是由基本数据类型构成的、并用一个标 识符来命名的各种变量的组合。结构中可以使 用不同的数据类型。结构通常用来定义存储在 文件中的记录。Date3Visual C+程序设计一:结构的定义结构是一种派生类数据类型,在使用结构 变量之前须先对结构进行定义。定义结构的一 般格式为:struct 结构名 类型 变量名; 类型 变量名; . ;结构名是结构的标识符不是变量名,花括号 内的变量称之为结构的成员,类型可以是我们以 前所学到的任意类型,甚至可以是结构但不能是 结构本身,每个成员的类型可以不一样。注意:每一个结构定义必须以分号结束! Date4Visual C+程序设计由于定义结构类型只是定义了一种数据类 型,因此,当编译器编译结构体的定义时, 并不为结构体中的成员分配任何内存空间, 从而在定义结构体的成员时,不能指定成员 的存储类型为auto、register、extern,但 可以指定结构体成员的存储类型为static, 其特点和作用将在以后介绍。 Date5Visual C+程序设计二:结构变量的定义声明结构变量与声明其它类型变量类似,格式为: struct 结构名 结构变量名;如: struct student int No;char name8;float score;;student stu1,stu2 ,stu30; 也可在定义结构的同时定义结构变量,如:struct student int No;char name8;float score;stu1, stu2, stu30; Date6Visual C+程序设计与基本数据类型类似,在定义结构体类型的 变量时,也可对该变量进行初始化,其方法与 对数组的初始化方法类似,即采用用花括号括 起来的初始值表。注意,初始值表中的数据类型必须与结构体 中对应元素的类型一致(兼容的除外),否则会 产生编译错误。另外,初始值表中的数据的个 数不能大于结构体中元素的个数。在定义结构体类型的变量时,也可以指定变 量的存储类型。 Date7Visual C+程序设计三:结构变量的初始化struct student int No;char name8;float score; ;student stu1=9601, ”张三“, 96.5;student stu2=9601, ”张三“,96.5 ,9602,”李四“,80; 或者struct student int No;char name8;float score;stu2=9601, ”张三“, 96.5 ,9602,”李四 “,80;Date8Visual C+程序设计对于结构体类型的变量,在编译过程中,编 译系统将为这些变量分配相应的内存空间,所分 配的空间大小原则上为结构体中所有成员所占空 间的总和。 结构体变量也存在作用域的问题,其作用域 与一般变量的作用域相同。Date9Visual C+程序设计结构体类型变量的使用 对结构体变量的使用一般是通过对其成 员的引用实现的。使用结构体变量的成员 的一般格式为:.其中,“是结构体成员运算符 Date10Visual C+程序设计struct student int No;char name8;float score;;四:结构成员的访问student stu1;cinstu1No;cout:;其中与该静态成员的类型一致,符号 “:”称为作用域运算符,它表示成员与结构的一 种隶属关系。静态成员可以脱离具体结构体变量而存取,即可 以利用结构体名和作用域运算符表示该成员。在用初始值表对结构体变量初始化时,不再对静 态成员置初值,即初始值表将跳过静态成员。 Date15Visual C+程序设计* 位域 如将一个字或一个字节以二进位为单位划分为若干 个区域,则每一个区域称为一个位域。位域通常用于 表示较小范围内的数。定义位域的一般格式为:struct unsigned :; unsigned :; ;位域名可以省略。位域名后的,可为0 或正整数,表示相应的位域所占用的二进位数。Date16Visual C+程序设计位域类型变量的使用方法与结构体类型变量的 使用方法完全相同。 (1) 在一个结构体中定义的任一个位域都必须 在同一个存储单元中(4个字节共32位)。如果本 存储单元中剩余的二进位不够定义一个位域成员 时,则该存储单元的剩余的二进位不用,而从下 一个存储单元开始。(2) 可以定义一个无名的位域成员,表示跳过 若干个二进位。(3) 可以定义位数为0的位域成员,表示其下 一个位域成员从下一个存储单元开始,此时该位 域的位域名必须为空。Date17Visual C+程序设计(4)一个位域成员的长度不能大于一个存储单元 的长度(32位)。(5)位域变量的使用方法与结构体变量的使用方 法完全一样。 (6)同一个存储空间中位域的分配方向随机器而 异。 (7)当要存入一个成员中的数超过它所能表示的 范围时,超过的高位将被去掉。(8)位域的优点是可以节省存储空间,但在存取 位域变量时,花费的时间较多。 Date18Visual C+程序设计共同体 与结构一样,共同体也是一种派生类 数据类型,但是其成员共享同一存储空间 ,即成员公用一个内存位置,可在不同的 时间保存不同的数据类型和不同长度的变 量。Date19Visual C+程序设计定义共同体类型的一般格式为: union ; ; ; 共同体类型变量的说明方法与结构体类型 变量的说明方法类似,也有三种方法。一般情况下我们把结构和共同体定义在 程序开头,然后在函数内定义结构变量和共 同体变量。Date20Visual C+程序设计由于共同体中的成员占用同一个内存空间, 该存储空间的大小为占用存储空间最大的成员所 占用的字节数。另外,在使用一个共同体类型变 量的成员之前必须先指定该成员的值。共用体成员的引用同结构一样,可使用成员运算符“ ”。但值得注意的是,在同一个时候只能引 用一个成员,引用当前成员,其它成员的值 会被覆盖。只能对共同体变量的第一个成员初始化 ,不能对整体初始化。Date21Visual C+程序设计【例】以下程序的运行结果是什么?union u_type int i;char ch6; / Along s;struct st_type u_type u; float score3; ; void main() cout enum colorRed,Green,Blue; char color6=“Red“,“Green“,“Blue“; void main() int i,j,k;for(i=Red;i=Blue;i+)for(j=Red;j=Blue;j+)for(k=Red;k=Blue;k+)if(i!=j Date28Visual C+程序设计课后练习:试卷汇编P5T27P6T29Date29Visual C+程序设计
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号