3 结构体、共用体和枚举类型.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《3 结构体、共用体和枚举类型.ppt》由会员分享,可在线阅读,更多相关《3 结构体、共用体和枚举类型.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第7章章 用户自定义数据类型用户自定义数据类型教学目标n理解结构体引入的原因,掌握结构体类型、结构体变量的定义理解结构体引入的原因,掌握结构体类型、结构体变量的定义方法,熟悉结构体变量的初始化和引用;方法,熟悉结构体变量的初始化和引用;n熟悉结构体数组定义、初始化及使用;熟悉结构体数组定义、初始化及使用;n熟悉共用体类型变量的定义、变量的引用方式,了解其数据特熟悉共用体类型变量的定义、变量的引用方式,了解其数据特点;点;n熟悉枚举类型的定义和基本使用方法;熟悉枚举类型的定义和基本使用方法;n了解了解typedef的功能、最基本用法。的功能、最基本用法。重点:重点:结构体类型和结构体变量的定义
2、,结构体变量的初始化和结构体类型和结构体变量的定义,结构体变量的初始化和引用,结构体数组定义、初始化及使用,共用体类型、枚举类引用,结构体数组定义、初始化及使用,共用体类型、枚举类型定义和变量的使用;型定义和变量的使用;难点:难点:结构体、共用体、枚举三者的异同点,类型定义与变量定结构体、共用体、枚举三者的异同点,类型定义与变量定义的差别,变量的使用及有关说明,义的差别,变量的使用及有关说明,枚举类型与整型的比较枚举类型与整型的比较。第第7章章 用户自定义数据类型用户自定义数据类型7.1 结构体 7.2 共用体 7.3 枚举类型 7.4 typedef的使用 数据类型数据类型基本类型基本类型整
3、整 型型字符型字符型浮点型浮点型派生类型派生类型指针类型指针类型(*)数组类型数组类型()结构体类型结构体类型(struct)共用体类型共用体类型(union)类类型类类型空类型空类型(void)枚举类型枚举类型(enum)uC+的数据类型的数据类型n概念:结构体概念:结构体(structure)是一种派生数据类型,由是一种派生数据类型,由用户自己建用户自己建立,由若干个类型不同数据项组成,是一种组合型数据结构立,由若干个类型不同数据项组成,是一种组合型数据结构。n现假设有如下资料现假设有如下资料:学号学号姓名姓名性别性别年龄年龄成绩成绩家庭地址家庭地址101001张三张三m2089.5北京路
4、123号101002李四李四f1994.3体育东路1号101003王五王五m2178.0体育西路5号intchar 20charchar 30intfloatn行行:包含包含几个数据项几个数据项,反映的是一个学生的整体信息反映的是一个学生的整体信息。记录记录问题:问题:用什么数据类型来用什么数据类型来存储存储由由多个多个类型可能不同的类型可能不同的数据项数据项组成组成的的“行行”信息信息?7.1.1为什么需要用结构体类型为什么需要用结构体类型 7.1.1为什么需要用结构体类型为什么需要用结构体类型 C+语言提供了一些系统已定义好的语言提供了一些系统已定义好的数据类型数据类型,如,如int、fl
5、oat、char等供用户使用。等供用户使用。我们可以通过这些类型来定义一些变量来我们可以通过这些类型来定义一些变量来存储存储学生的学生的信息信息:int num;/定义学号定义学号char name20;/定义姓名定义姓名char sex;/定义性别定义性别int age;/定义年龄定义年龄float score;/定义成绩定义成绩char addr30;/家庭地址家庭地址包含包含int、char、float三种不同数据三种不同数据类型,还定义了两类型,还定义了两个数组。个数组。但这些变但这些变量之间无内在联系量之间无内在联系。7struct student int num;/数据项学数据项学
6、号号 char name20;/数据项姓数据项姓名名 char sex;/数据项性数据项性别别 int age;/数据项年数据项年龄龄 float score;/数据项成数据项成绩绩 char addr30;/数据项地址数据项地址;7.1.1为什么需要用结构体类型为什么需要用结构体类型 如果这样定义一如果这样定义一个个结构体类型结构体类型,数据项间就建立数据项间就建立联系了联系了。7.1.1为什么需要用结构体类型为什么需要用结构体类型struct 结构体类型名结构体类型名数据类型数据类型 成员成员1;数据类型数据类型 成员成员2;数据类型数据类型 成员成员n;结构体标识结构体标识,不能省略不能
7、省略n定义结构体类型的一般形式定义结构体类型的一般形式 地位与地位与int、char、float、double等类型等类型名相同,名相同,通常首字母大通常首字母大写写。已有类型已有类型或或已定义的已定义的“结构体结构体”,每一个数据,每一个数据项可以是项可以是不同类型不同类型数据项名称数据项名称,又称又称“域域”struct Dateint year;int month;int day;例例:结构体类型名结构体类型名 Date struct Studentint num;char name20;char sex;int age;float score;char addr30;例:结构体类型名例
8、:结构体类型名 Stduent 7.1.2结构体类型类型变量的定义方法结构体类型类型变量的定义方法 及初始化及初始化1.定义结构体类型变量的方法定义结构体类型变量的方法1)先声明结构体类型,再定义该类型变量)先声明结构体类型,再定义该类型变量2)在定义类型的同时声明变量)在定义类型的同时声明变量 例如:例如:struct Student int num;char name20;char sex;int age;float score;char addr30;student1,student2;struct student int num;/数据项学数据项学号号 char name20;/数据项
9、姓数据项姓名名 char sex;/数据项性数据项性别别 int age;/数据项年数据项年龄龄 float score;/数据项成数据项成绩绩 char addr30;/数据项地址数据项地址;student student1,student2;结构体类型名结构体类型名结构体变量名结构体变量名 结构体类型名结构体类型名结构体变量名结构体变量名 3)不指定结构体类型名,直接定义结构体类型变量不指定结构体类型名,直接定义结构体类型变量 struct 成员表列成员表列 变量名表列变量名表列;n说明:说明:(1)结构体类型与结构体变量是不同的概念结构体类型与结构体变量是不同的概念。只能对变量赋值、存取
10、或运算只能对变量赋值、存取或运算,而不能对一个类型赋值、存取或运算。,而不能对一个类型赋值、存取或运算。在编译时,对类型是不分配空间的,只对变量分配空间在编译时,对类型是不分配空间的,只对变量分配空间(2)对结构体变量中的对结构体变量中的成员成员(即即“域域”),可以单独使用可以单独使用,它的作用与地位它的作用与地位相相当于普通变量当于普通变量。(3)结构体成员可以属于另一个结构体类型。结构体成员可以属于另一个结构体类型。struct Date int month;int day;int year;struct Student int num;char name20;char sex;int
11、age;struct Date birthday;char addr30;例:例:n结构体变量的初始化结构体变量的初始化:即在:即在定义结构体变量时给它的各成员赋初值定义结构体变量时给它的各成员赋初值2.结构体变量的初始化结构体变量的初始化例例:把一个学生的信息把一个学生的信息(包括学号、姓名、性别、住址包括学号、姓名、性别、住址)放在一个结构体放在一个结构体变量中,然后输出这个学生的信息。变量中,然后输出这个学生的信息。n解题思路:解题思路:建立一个结构体类型,包括有关学生信息的各成员建立一个结构体类型,包括有关学生信息的各成员,用它用它定义结构体变量,同时赋以初值定义结构体变量,同时赋以初
12、值,最后,最后输出该结构体变量的各成员输出该结构体变量的各成员。#include using namespace std;int main()struct studentlong int num;char name20;char sex;char addr20;a=10101,Li Lin,M,123 Beijing Road;/变量变量a初始化初始化coutNO.:a.numnname:a.namensex:a.sexnaddress:a.addr;return 0;7.1.3引用引用结构体变量结构体变量引用引用格式:格式:结构体变量名结构体变量名.成员名成员名 (.是成员运算符,优先级最高
13、是成员运算符,优先级最高)struct Student a;a=4102,Li Ping,F,21,80,Beijing Road 11#;错误!错误!(1)同类型的结构体变量可互相赋值,同类型的结构体变量可互相赋值,如:如:student1=student2;(2)可以引用一个结构体变量中的一个成员的值。struct student a;a.score=80;strcpy(a.addr,Beijing Road 11#);正确!正确!不允许整体给不允许整体给结构体变量结构体变量赋值,赋值,只能对各个成员逐一赋值只能对各个成员逐一赋值;(3)如果如果结构体的成员中又包含结构体结构体的成员中又包
14、含结构体,只能用多个只能用多个.号逐级找到最底层的变号逐级找到最底层的变量量,进行,进行赋值、存取及运算赋值、存取及运算,如:,如:student1.birthday.month=7;a.num=10010;正确!正确!(4)一般情况下不能对结构体变量整体使用,一般情况下不能对结构体变量整体使用,不能整体输入、输出不能整体输入、输出,只能对各成员分别引用只能对各成员分别引用;couta;(企图整体读入结构体变量企图整体读入结构体变量)错误!错误!(5)结构体的成员可以象普通变量一样进行各种运算结构体的成员可以象普通变量一样进行各种运算如:如:sum=student1.score+student
15、2.score;(6)可以引用结构体变量成员的地址,也可以引用结构体变量的地址,可以引用结构体变量成员的地址,也可以引用结构体变量的地址,如:如:cout&students.num;cout&student1;/输出输出student1的首地址的首地址例例:输入两个学生的学号、姓名和成绩,输出成绩较高学生的学号、姓名和成绩。输入两个学生的学号、姓名和成绩,输出成绩较高学生的学号、姓名和成绩。n解题思路:解题思路:定义定义同一个结构体的两个同一个结构体的两个变量变量,再分别输入学生的,再分别输入学生的学号、姓名学号、姓名和成绩;和成绩;再再比较两个学生的成绩,如果比较两个学生的成绩,如果哪一个哪
16、一个学生的成绩高学生的成绩高,就输出该学,就输出该学生生全部信息,全部信息,若若相等,输出相等,输出两两个学生的全部信息个学生的全部信息。#include using namespace std;int main()struct student int num;char name20;float score;student1,student2;coutstudent1.numstudent1.namestudent1.score;cinstudent2.numstudent2.namestudent2.score;coutstudent2.score)coutstudent1.numstude
17、nt1.namestudent1.score;else if(student1.scorestudent2.score)coutstudent2.numstudent2.namestudent2.score;else coutstudent1.numstudent1.namestudent1.score;coutstudent2.numstudent2.namestudent2.score;return 0;n 概念:顾名思义是数组中的概念:顾名思义是数组中的每一个元素都是结构体变量每一个元素都是结构体变量1.定义结构体数组一般形式:定义结构体数组一般形式:格式格式1:struct 结构体名结
18、构体名 成员表列成员表列 数组名数组名数组长度数组长度;格式格式2:先声明一个结构体类型,然后:先声明一个结构体类型,然后再用此类型定义结构体数组再用此类型定义结构体数组,即:,即:结构体类型结构体类型 数组名数组名数组长度数组长度;n7.1.4结构体结构体数组数组 struct Student int num;char name20;char sex;int age;float score;char addr30;Student stu3;struct Student int num;char name20;char sex;int age;float score;char addr30;s
19、tu3;数组数组名名 结构体类型名结构体类型名结构体类型名结构体类型名数组数组名名 2.结构体数组的初始化:结构体数组的初始化:在定义数组的后面加上:在定义数组的后面加上:初值表列初值表列;n7.1.4结构体结构体数组数组 struct Student int num;char name20;char sex;int age;float score;char addr30;sty3=10101,Li Lin,M,18,87.5,103 Beijing Road,10102,Zhang Fun,M,19,99,130 Shanghai Road,10104,Wang Min,F,20,78.5,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构体、共用体和枚举类型 结构 共用 枚举 类型
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内