(精品)第07章自定义数据类型.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)
《(精品)第07章自定义数据类型.ppt》由会员分享,可在线阅读,更多相关《(精品)第07章自定义数据类型.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、LogoLogoAdd Your Company Slogan第第7章自定义数据类型章自定义数据类型C+程序程序设计本章主要本章主要内内容容1237.1 7.1 结构构体体类型型7.3 7.3 枚枚举类型型7.27.2共用体共用体类型型Logo数据类型回顾:数据类型回顾:基本的数据类型:基本的数据类型:int、float、double、char、bool、指针类型、引用类型指针类型、引用类型用户自定义数据类型:用户自定义数据类型:数组数组结构体结构体(structure)类型类型共用体共用体(union)类型类型枚举枚举(enumeration)类型类型类类(class)类型类型Logo7.1
2、 结构体类型结构体类型7.1.1 结构体概述结构体概述 有时需要将有时需要将不同类型的数据组合成一个有机的整不同类型的数据组合成一个有机的整体体,以供用户方便地使用。这些组合在一个整体中,以供用户方便地使用。这些组合在一个整体中的数据是互相联系的。例如,一个学生的学号、姓的数据是互相联系的。例如,一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项,都是这个名、性别、年龄、成绩、家庭地址等项,都是这个学生的属性。学生的属性。图7.1Logo7.1.1 结构体概述结构体概述 利用利用结构体结构体将若干个类型不同的数据项组合在一起。它将若干个类型不同的数据项组合在一起。它相当于相当于SQL Ser
3、verSQL Server中的中的记录记录(record)(record)。例如,定义一个学生的结构体:例如,定义一个学生的结构体:struct struct StudentStudent /声明一个结构体类型声明一个结构体类型StudentStudent int num;int num;/包括一个整型变量包括一个整型变量numnumchar name20;char name20;/包括一个字符数组包括一个字符数组namenamechar sex;char sex;/包括一个字符变量包括一个字符变量sexsexint age;int age;/包括一个整型变量包括一个整型变量ageage fl
4、oat score;float score;/包括一个单精度型变量包括一个单精度型变量char addr30;char addr30;/包括一个字符数组包括一个字符数组addraddr;/最后有一最后有一个个分分号号Logo7.1.1 结构体概述结构体概述struct是声明结构体类型时所必须使用的关键字。是声明结构体类型时所必须使用的关键字。Student是一个结构体类型名,与是一个结构体类型名,与int、char、float、double等一样,可用来定义变量,只不过结构体类型需要事等一样,可用来定义变量,只不过结构体类型需要事先由用户自己声明。先由用户自己声明。声明一个结构体类型的一般形式
5、为声明一个结构体类型的一般形式为:struct 结构体类型名结构体类型名成员表列;成员表列;;Logo7.1.1 结构体概述结构体概述p声明结构体类型的位置:声明结构体类型的位置:(1)一般在文件的开头,一般在文件的开头,在所有函数在所有函数(包括包括main函数函数)之之前前,以便本文件中所有的函数都能利用它来定义变量。,以便本文件中所有的函数都能利用它来定义变量。(2)也可以在函数中声明结构体类型。也可以在函数中声明结构体类型。Logo7.1.2 结构体类型变量结构体类型变量 前面只是指定了一种结构体类型,它相当于一个前面只是指定了一种结构体类型,它相当于一个模型,但其中并无具体数据,系统
6、也不为之分配实模型,但其中并无具体数据,系统也不为之分配实际的内存单元。际的内存单元。为了能在程序中使用结构体类型的为了能在程序中使用结构体类型的数据,应当定义数据,应当定义结构体类型的变量结构体类型的变量,并在其中存放,并在其中存放具体的数据。具体的数据。1.定义结构体类型变量的方法定义结构体类型变量的方法可以采取以下可以采取以下3种方法定义结构体类型的变量。种方法定义结构体类型的变量。(1)先声明结构体类型再定义变量名先声明结构体类型再定义变量名Logo7.1.2 结构体类型变量结构体类型变量struct Student /声明一个结构体类型声明一个结构体类型Studentint num;
7、/包括一个整型变量包括一个整型变量numchar name20;/包括一个字符数组包括一个字符数组namechar sex;/包括一个字符变量包括一个字符变量sexint age;/包括一个整型变量包括一个整型变量age float score;/包括一个单精度型变量包括一个单精度型变量char addr30;/包括一个字符数组包括一个字符数组addr;Student student1,student2;Logo7.1.2 结构体类型变量结构体类型变量(2)在声明类型的同时定义变量在声明类型的同时定义变量struct struct StudentStudent int num;int num;
8、char name20;char name20;char sex;char sex;int age;int age;float score;float score;char addr30;char addr30;student1student1,student2student2定义的一般形式为定义的一般形式为:struct 结构体名结构体名成员表列成员表列 变量名表列;变量名表列;Logo7.1.2 结构体类型变量结构体类型变量(3)直接定义结构体类型变量直接定义结构体类型变量struct int num;char name20;char sex;int age;float score;cha
9、r addr30;student1,student2;提倡使用先定义类型后定义变量的第提倡使用先定义类型后定义变量的第(1)种方法。种方法。struct /结构体类型名结构体类型名省略省略 成员表列成员表列 变量名表列;变量名表列;Logo7.1.2 结构体类型变量结构体类型变量说明:说明:(1)类型与变量是不同的概念,不要混淆。类型与变量是不同的概念,不要混淆。只能对只能对结构体变量中的成员赋值结构体变量中的成员赋值,而不能对结构体类型赋而不能对结构体类型赋值。值。在编译时,是不会为类型分配空间的,只为变在编译时,是不会为类型分配空间的,只为变量分配空间。量分配空间。(2)对结构体中的成员,
10、可以单独使用,它的作用对结构体中的成员,可以单独使用,它的作用与地位相当于普通变量。与地位相当于普通变量。(3)成员也可以是一个结构体变量。成员也可以是一个结构体变量。Logostruct Date /声明一个结构体类型声明一个结构体类型Dateint month;int day;int year;struct Student /声明一个结构体类型声明一个结构体类型Studentint num;char name20;char sex;int age;Date birthday;char addr30;student1,student2;Logo7.1.2 结构体类型变量结构体类型变量Stud
11、ent的结构见图的结构见图7.3所示。所示。Logo7.1.2 结构体类型变量结构体类型变量2.结构体变量的初始化结构体变量的初始化Student student1=10001,Zhang Xin,M,19,90.5,Shanghai;3.结构体变量的引用结构体变量的引用(1)将一个结构体变量的值赋给另一个具有相同结将一个结构体变量的值赋给另一个具有相同结构的结构体变量。如构的结构体变量。如:student1=student2;(2)引用结构体变量中的一个成员的方式:引用结构体变量中的一个成员的方式:结构体变量名结构体变量名.成员名成员名如:如:student1.num=1001;Logo7.
12、1.2 结构体类型变量结构体类型变量(3)如果成员本身也是一个结构体类型如果成员本身也是一个结构体类型,则要用若干个,则要用若干个成员运算符,一级一级地找到最低一级的成员。成员运算符,一级一级地找到最低一级的成员。如果想引用如果想引用student1变量中的变量中的birthday成员中的成员中的month成员,则成员,则必须逐级引用必须逐级引用:student1.birthday.month Logo7.1.2 结构体类型变量结构体类型变量(4)不能将一个结构体变量作为一个整体进行输入和输出。不能将一个结构体变量作为一个整体进行输入和输出。如:如:coutstudent1;只能对结构体变量中
13、的各个成员分别进行输入和输出。只能对结构体变量中的各个成员分别进行输入和输出。(5)对结构体变量的成员可以像普通变量一样进行各种运对结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算种类)。算(根据其类型决定可以进行的运算种类)。student2.scorestudent1.score;sumstudent1.scorestudent2.score;student1.age+;/“.”运算符的优先级最高运算符的优先级最高+student1.age;Logo7.1.2 结构体类型变量结构体类型变量(6)可以引用结构体变量成员的地址,也可以引用结构体变量可以引用结构体变量
14、成员的地址,也可以引用结构体变量的地址。如的地址。如cout&student1;/输出输出student1的首地址的首地址cout&student1.age;/输出输出student1.age的地址的地址结构体变量的地址主要用作函数参数,将结构体变量的地址传结构体变量的地址主要用作函数参数,将结构体变量的地址传递给形参。递给形参。Logo7.1.4 结构体数组结构体数组 一个结构体变量中可以存放一组数据(如一个学生一个结构体变量中可以存放一组数据(如一个学生的学号、姓名、成绩等数据)。如果有的学号、姓名、成绩等数据)。如果有10个学生的数个学生的数据需要参加运算,显然应该用数组,这就是结构体数
15、据需要参加运算,显然应该用数组,这就是结构体数组。组。结构体数组与以前介绍过的数值型数组的不同之结构体数组与以前介绍过的数值型数组的不同之处在于:处在于:每个数组元素都是一个结构体类型的数据,每个数组元素都是一个结构体类型的数据,它们都分别包括各个成员项。它们都分别包括各个成员项。Logo7.1.4 结构体数组结构体数组1.定义结构体数组定义结构体数组和定义结构体变量的方法相仿,定义结构体数组时只需声明其为和定义结构体变量的方法相仿,定义结构体数组时只需声明其为数组即可。如数组即可。如struct Student /声明结构体类型声明结构体类型Student int num;char name
16、20;char sex;int age;float score;char addr30;Student stu3;/定义定义Student类型的数组类型的数组stuLogo7.1.4 结构体数组结构体数组也可以直接定义一个结构体数组,如也可以直接定义一个结构体数组,如struct Student int num;char name20;char sex;int age;float score;char addr30;stu3;struct int num;char name20;char sex;int age;float score;char addr30;stu3;或或Logo7.1.4
17、结构体数组结构体数组 见图见图7.4。数组各元素在内存。数组各元素在内存中连续存放,见图中连续存放,见图7.5示意。示意。Logo7.1.4 结构体数组结构体数组2.结构体数组的初始化结构体数组的初始化对结构体数组可以初始化。如对结构体数组可以初始化。如struct Student int num;char name20;char sex;int age;float score;char addr30;sty3=10101,LiLin,M,18,87.5,Beijing Road,10102,Zhang Fun,M,19,99,Shanghai Road,10104,Wang Min,F,20
18、,78.5,Zhongshan Road;Logo7.1.4 结构体数组结构体数组3.结构体数组应用举例结构体数组应用举例下面举一个简单的例子来说明结构体数组的定义下面举一个简单的例子来说明结构体数组的定义和引用。和引用。例例7.2 对候选人得票的统计程序。设有对候选人得票的统计程序。设有3个候选人,个候选人,最终只能有最终只能有1人当选为领导。今有人当选为领导。今有10个人参加投个人参加投票,从键盘先后输入这票,从键盘先后输入这10个人所投的候选人的名个人所投的候选人的名字,要求最后输出这字,要求最后输出这3个候选人的得票结果。个候选人的得票结果。可以定义一个候选人结构体数组,包括可以定义一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 07 自定义 数据类型
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内