欢迎来到天天文库
浏览记录
ID:52969823
大小:2.95 MB
页数:71页
时间:2020-04-05
《轻松学C之复合数据类型.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章复合数据类型前面章节介绍了基本数据类型,但在具体的应用中,这些基本数据类型不能完全满足程序设计的需要。为此,C++引入了复合数据类型,复合数据类型是由几个或许多基本数据类型和复合数据类型构造而成的。本章将见绍几种常用的复合数据类型:结构体、联合、枚举和用户自定义数据类型。8.1结构体结构体是用于解决在一个数据类型中包含多个数据类型成员的问题,其在现实应用中较为常见。本节将详细见绍结构体及其定义和声明。8.1.1结构体概述在实际应用中,一组数据往往具有不同的数据类型。例如,在学生的学籍表中,姓名应为字符型;学号可为整型或字符型;年龄应为整型;性别应为字
2、符型;成绩可为整型或实型。这几种数据用基本数据类型表示如图8-1所示。图8-1基本数据类型表示对于图8-1中的数据,显然不能用一个数组来存放,因为数组中各元素的类型和长度都必须一致。此时就引入了一个新的复合数据类型——结构体。结构体的定义如图8-2所示。图8-2结构体的定义注意:结构体是一种用户自定义的数据类型,因此可以自己为结构体命名。例如,将图8-1中学生学籍表中的5个数据类型组成一个整体,并将其存入结构体中,为该结构体命名为Student后,这5个变量就成为了结构体Student的5个数据成员了,如图8-3所示。图8-3结构体Student可以看出,
3、在一个结构体Student中可以包含多个不同的数据类型,它与数组有所区别,结构体的应用较数组更为广泛。8.1.2定义结构体类型复合数据类型与基本数据类型有所不同,如图8-4所示。图8-4复合数据类型与基本数据类型的不同在C++中,用关键字struct来定义结构体,即所有结构体必须先通过struct关键字进行说明其数据成员,其一般形式如图8-5所示。图8-5定义结构体注意:一个结构体中的成员变量不能重名。结构体也可以嵌套定义,即在结构体的定义中,不但可以包含基本数据类型,还可以包含已定义的结构体数据类型。例如,在定义一个学生选课表结构体时,需要使用到学生学籍
4、表中的所有数据成员,此时就可以将已定义的Student结构体作为学生选课表结构体Course的一个成员,定义如图8-6所示。图8-6结构体Course结构体嵌套定义的好处:声明一个结构体时,结构体中的成员数目不宜过多,若成员数目过多不宜管理。建议将一个成员数目多的结构体进行分解。8.1.3声明结构体变量在定义结构体类型完成后,该结构体类型包含了哪些成员变量,其长度和类型都已经定义好了,接下来就可以使用该类型声明具体的结构体变量了。例如,构造一个结构体类型Student,并声明一个该结构体类型的变量Stu,可以有几种方法来实现,如图8-7所示。图8-7声明结
5、构体变量的几种方法第4种方法中通过StudentStu即可完成结构体变量Stu的声明。此处的Student是一个具体的结构体类型名,它能够唯一地标识这种结构体类型。因此,可用它来定义变量,如同使用int、char一样,不需再写关键字struct。有关typedef关键字的说明在后续章节中将具体介绍。8.2结构体的应用定义结构体类型和声明结构体变量后,就可以在具体程序中使用该结构体了。一般来说,在使用前可以为结构体变量赋初值,以便在程序中引用结构体成员变量。8.2.1初始化结构体变量结构体变量的初始化方式与数组类似,分别给结构体的成员变量以初始值。而结构体成
6、员变量的初始化遵循简单变量或数组的初始化方法。根据8.1.3节声明结构体变量的不同方法,初始化变量的形式也有多种。例如,下列语句对上述结构体类型structStudent声明的变量Stu进行初始化,如图8-8所示。图8-8初始化结构体变量注意:对结构体变量进行赋初值时,C++编译程序按每个成员在结构体中的顺序一一对应赋初值,不允许跳过前面的成员给后面的成员赋初值。同样地,其他几种在定义结构体类型的同时声明变量的初始化方法类似,只需直接将初始化列表写入结构体变量后,以一对“{}”包围起来即可。此外,C++允许只给前面的若干成员赋初值,对于后面未赋初值的成员,
7、系统自动赋默认的初值。例如,如果将上述初始化语句改写为:“structStudentStu={"张三"};”,那么该结构体变量Stu中各成员变量对应的值如图8-9所示。图8-9默认初值相同类型的结构体变量之间可以进行整体赋值。例如mybox和yourbox都是box类型结构体定义的变量,它们之间可以进行整体赋值。structbox{intlength;//长intwidth;//宽intheight;//高};structboxmybox,yourbox;mybox.length=10;mybox.width=19;mybox.heigth=15;your
8、box=mybox;代码说明:“yourbox=mybox;”等价
此文档下载收益归作者所有