C++程序设计(第3版)谭浩强 第7章.ppt_第1页
C++程序设计(第3版)谭浩强 第7章.ppt_第2页
C++程序设计(第3版)谭浩强 第7章.ppt_第3页
C++程序设计(第3版)谭浩强 第7章.ppt_第4页
C++程序设计(第3版)谭浩强 第7章.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+ 程序设计,第2篇 基于过程的程序设计 第7章 用户自定义数据类型 铜陵学院 汪永生,目录,7.1 结构体类型 7.2 枚举类型 7.3 用typedef声明新的类型名,第7章 用户自定义数据类型,7.1 结构体类型 7.1.1 为什么需要用结构体类型 将不同类型的数据组合成一个有机的整体,以供用户方便地使用,这些组合在一个整体中的数据是相互联系的。如: 声明一个结构体类型的一般形式为: struct 结构体类型名 成员表; 如:,;不能省略,第7章 用户自定义数据类型,7.1.2 结构体类型变量的定义方法及其初始化 1. 定义结构体类型变量的方法 (1)先声明结构体类型再定义变量 如: Student student1, student2; (2)在声明类型的同时定义变量 定义一般形式: struct 结构体名 成员表; 变量名表; 如:,第7章 用户自定义数据类型,7.1.2 结构体类型变量的定义方法及其初始化 2. 结构体变量的初始化 (1)结构体定义时指定初始化 如: (2)声明类型与定义变量分开的形式 如:,第7章 用户自定义数据类型,7.1.3 引用结构体变量 2. 结构体变量的初始化 (1)可以将一个结构体变量的值赋给另一个具有相同结构的结构体变量。 如:student1 = student2; (2)可以引用一个结构体变量中的一个成员的值。引用结构体变量中成员的一般形式为 结构体变量名.成员名 如:student1.num; student1.num=10010; 例7.1 定义两个结构体变量student1和student2,成员包括学号、姓名、性别、出生日期、成绩。对student2初始化,再把student2的值赋给student1。输出student1的各成员。,第7章 用户自定义数据类型,7.1.3 引用结构体变量 2. 结构体变量的初始化 例7.1 定义两个结构体变量student1和student2,成员包括学号、姓名、性别、出生日期、成绩。对student2初始化,再把student2的值赋给student1。输出student1的各成员。,第7章 用户自定义数据类型,7.1.4 结构体数组 结构体数组每个元素都是一个结构全类型的数据,它们分别包括各个成员项。 例7.2 对候选人得票的统计程序。设有3个候选人,最终只能有1个人当选为领导。今有10个人参加投票,从键盘先后输入这10个人所投候选人的名字,要求最后输出各候选人得票结果。 方法一:数组法,第7章 用户自定义数据类型,7.1.4 结构体数组 结构体数组每个元素都是一个结构全类型的数据,它们分别包括各个成员项。 例7.2 对候选人得票的统计程序。设有3个候选人,最终只能有1个人当选为领导。今有10个人参加投票,从键盘先后输入这10个人所投候选人的名字,要求最后输出各候选人得票结果。 方法二:string法,第7章 用户自定义数据类型,7.1.5 指向结构体变量的指针 一个结构体变量的指针就是该变量所占据的内存段的起始地址,可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。 1.通过指向结构体变量的指针引用结构体变量中的成员 例7.3 定义一个结体变量stu,成员包括学号、姓名、性别、成绩。 定义一个指针变量p指向该结构体变量stu,通过该指针变量输出各成员的值。,结构体变量的指针引用成员变量方法: (1)(*p).成员名 (2)p-成员名,第7章 用户自定义数据类型,7.1.5 指向结构体变量的指针 2.用结构体变量和指向结构体变量的指针构成链表 链表是一种常见的重要的数据结构。,例7.4 建立一个如图7.6所示的简单链表,它由3个学生数据的结点组成。输出各结点中的数据。,第7章 用户自定义数据类型,7.1.6 结构体类型数据作为函数参数 将一个结构体变量中的数据传递给另一个函数,方法有3种: (1)用结构体变量名作参数。 (2)用指向结构体变量的指针作实参,将结构体变量的地址传给形参。 (3)用结构体变量的引用作函数形参,它就成为实参的别名。,例7.5 有一个结构体变量stu,内含学生学号、姓名和3门课的成绩。要求在main函数中为各成员赋值,在另一函数print中将它们值输出。 (1)用结构体变量作函数参数,第7章 用户自定义数据类型,7.1.6 结构体类型数据作为函数参数 例7.5 有一个结构体变量stu,内含学生学号、姓名和3门课的成绩。要求在main函数中为各成员赋值,在另一函数print中将它们值输出。 (2)用指向结构体变量的指针作实参,第7章 用户自定义数据类型,7.1.6 结构体类型数据作为函数参数 例7.5 有一个结构体变量stu,内含学生学号、姓名和3门课的成绩。要求在main函数中为各成员赋值,在另一函数print中将它们值输出。 (3)用结构体变量的引用作函数参数,3种方法的比较: 程序(1)用结构体变量作实参和形参,虚实结合时空间和时间的开销比较大,效率不高; 程序(2)采用指针变量作为实参和形参,空间和时间开销较小,效率较高。 程序(3)的实参是结构体变量,形参用引用,虚实结合时传递的是实参地址,效率较高,兼有(1)和(2)的优点。,第7章 用户自定义数据类型,7.1.7 用new和delete运算符进行动态分配和撤销存储空间 new运算符使用的一般格式为: new 类型初值 例如: new int; new int(100); new char10; new int54; float *p =new float(3.1459); 注:用new分配数组空间时不能指定初值。如果由于内存不足等原因而无法正常分配空间,则new会返回一个空指针NULL,用户可以根据该指针的值判断分配空间是否成功。,第7章 用户自定义数据类型,7.1.7 用new和delete运算符进行动态分配和撤销存储空间 delete运算符使用的一般格式为: delete 指针变量 或 delete 指针变量 例如: delete p; /p开辟的空间指针变量 delete pt; /pt为指向数组地址指针变量,第7章 用户自定义数据类型,7.1.7 用new和delete运算符进行动态分配和撤销存储空间 例7.6 临时开辟一个存储空间以存放一个结构体数据。假设已声明了一个结构体类型Student(成员包括name,num,sex)。如有下面的程序段:,第7章 用户自定义数据类型,7.2 枚举类型 枚举(enumeration)类型是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。 声明枚举类型的一般形式为: enum 枚举类型名 枚举常量表; 例如: enum weekday sun,mon,tue,wed,thu,fri,sat workday,week_end; 说明: (1)枚举元素按常量处理,故称枚举常量。 (2)枚举元素作为常量,它们是有值的,其值是一个整数,编译系统定义时的顺序对它们赋值为0,1,2, (3)枚举值可以用来做判断比较,按整数比较规则进行比较。 (4)不能把一个整数直接赋给一个枚举变量,枚举变量只能接受枚举类型数据。,第7章 用户自定义数据类型,7.2 枚举类型 例7.7 口袋中有红、黄、蓝、白、黑5种颜色的球若干。每次从口袋中任意取出3个球,问得到不同颜色的球的取法,输出每种排列的情况。,第7章 用户自定义数据类型,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论