C++程序设计教程第7章.pdfVIP

  • 14
  • 0
  • 约3.19万字
  • 约 35页
  • 2018-03-27 发布于河南
  • 举报
C++程序设计教程第7章.pdf

第7章 构造数据类型 教学提示:前面几章我们学习过的所有类型,如整型、字符型、浮点型、逻辑型以及 相应的指针类型、引用类型等,它们都是 C++ 系统内预定义的数据类型,系统为它们规定 了相应的取值范围和操作,在程序中可直接使用。为了求解较复杂问题,C++语言提供了 一种自定义的数据类型机制,用这种机制就可以定义较复杂的数据类型,如数组、结构型、 共用型、枚举型和类等。由于这些复杂数据类型的元素或成员的数据类型仍然是基本数据 类型,因此这些自定义的数据类型 除枚举类型外 又称为“构造数据类型”。 本章学习结构型 struct 、共用型 union 、枚举型 enum 和类型定义语句 typedef 等。 有 关类类型的定义和使用,将在后续章节介绍。 学习目标: 掌握结构型的定义、结构型变量的定义和使用; 掌握共用型的定义、共用型变量的定义和使用; 掌握枚举型的定义、枚举型变量的定义和使用; 理解 typedef 作用,了解 typedef 的使用方法; 能综合运用上述方法和技术进行较复杂的程序设计。 7.1 结 构 体 前面章节我们详细讨论了数组。数组是一组有序数据的集合,数组中的每一个元素都 属于同一种数据类型。用一个统一的数组名和下标来唯一地确定数组中的元素。实际生活 中的事物,往往具有多种属性,如“学生”这个实体,它有“学号”、“姓名”、“成绩”、 “平均成绩”等属性。一般来说这些属性是一些不同类型的量,例如: 学号 //可以是长整型量或字符型的量 姓名 //是字符型的量 成绩、平均成绩 //是实型量等 因此,要描述“学生”这种实体,数组是无能为力的,必须使用另外的数据类型,这 就是结构型。 C++语言中,允许用户将不同类型的数据组合成一个有机的整体,这些数据互相联系, 这种数据结构称为结构体 structure 。 用数组解决学生成绩统计,需要定义3 个数组,“学号”用长整型数组,“姓名”用 二维字符数组,各门成绩用float 型数组。数组的访问需要对逐个元素分别访问,不能对某 行整体访问;进行成绩排序时,需要将一行中的元素分别进行交换。使用结构体组织数据, 可以实现对整行的访问,大大简化了编程。 ·178 · C++程序设计 7.1.1 结构体类型的定义 C++用结构体描述“学生”这个抽象实体如下: struct Student //定义名为Student 学生 的结构体类型 //以下是结构型的成员: long num; //学号,长整型 char name[10]; //姓名,字符型数组 float score[3]; //数学,英语,计算机成绩,实型 float ave; //平均成绩,实型 ; //注意最后的分号不可少 其中,struct 是关键字,表示将要进行结构体的定义;Student 是用户自己定义的结构 体类型标识符,即该结构体类型名;大括弧中是该结构型的成员的声明;最后以“;”结 束结构体类型的定义。 结构体类型定义的一般形式为: struct 结构体类型名 类型标识符 1 成员1; 类型标识符2 成员2; … 类型标识符n 成员n; ; 请注意以下几点说明。 1 “结构体类型名”用作结构体类型的标志。 2 大括弧内是该结构体中的各个成员,由它们组成一个结构体;在结构体内对各成 员都应进行类型声明。 3 “成员列表”也称为域表。每个成员也称为结构体中的一个域,成员的命名规则与 变量名一样。 4 每个成员名前的类型标识符可以为已经定义了的任意类型,当然可以是结构体类 型标识符,即结构体成员也可以是另一个结构体变量。例如: struct Date //定义日期结构型 int day; char month[10]; int year; ; struct Student1 //定义学生结构型,其中有日期结构型的成员 long num; char name[10]; bool sex; struct Date birthday; //birthday 为date 结构型变量 float score; //同类型变量可以一起定义 ; 5 在程序中可以定义多个结构体类型,不同结构体类型用不同的结构体名来区分。 注意:① 此处只是构造出一个新的类型,并没有定义该类型的变量,因此在内存中并没有 ·178 · 第 7 章 构造数据类型 ·179 · 开辟任何存储空间。 ② 成员也可以是指向本结构体类型的指针变量,例如: struct Studentp int num; char name[12]; float score; struct student *next; ; 其中,next 是指向本结构体类型的指针,占 4 个字节

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档