自定义数据类型.ppt
《自定义数据类型.ppt》由会员分享,可在线阅读,更多相关《自定义数据类型.ppt(29页珍藏版)》请在三一办公上搜索。
1、,基本的数据类型(如int、float、double、char等)数组用户可以自己声明的类型还有:结构体(structure)类型共用体(union)类型枚举(enumeration)类型,第7章 自定义数据类型,7.1 结构体类型,7.1.1 结构体概述,有时需要将不同类型的数据组合成一个有机的整体。例如,一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项,都是这个学生的属性。见图7.1。,图7.1,结构体(struct):将不同类型的数据组合成一个有机的整体声明一个结构体类型的一般形式为struct 结构体类型名成员表列;,例如:struct Student/声明一个结构体类型Stude
2、nt int num;/包括一个整型变量numchar name20;/包括一个字符数组name,可以容纳20个字符char sex;/包括一个字符变量sexint age;/包括一个整型变量age float score;/包括一个单精度型变量char addr30;/包括一个字符数组addr,可以容纳30个字符;/最后有一个分号Student就是结构体类型名。大括号内是该结构体中的全部成员(member),7.1.2 结构体类型变量的定义方法及其初始化,(2)在声明类型的同时定义变量例如:struct Student/声明结构体类型Student int num;char name20;c
3、har sex;int age;student1,student2;/定义两个结构体类型Student的变量,这种形式的定义的一般形式为struct 结构体名成员表列变量名表列;,关于结构体类型,有几点要说明:,(1)结构体中的成员相当于普通变量。,struct Date/声明一个结构体类型Date int month;int day;int year;struct Student/声明一个结构体类型Student int num;char name20;char sex;Date birthday;/Date是结构体类型,birthday是Date类型的成员student1,student2
4、;,(3)结构体中的成员名可以与程序中的变量名相同。例如,程序中可以另定义一个整型变量num,它与student中的num是两回事,互不影响。,(2)成员也可以是一个结构体变量。即结构嵌套,如,2.结构体变量的初始化在定义时指定初始值。如struct Student int num;char name20;char sex;int age;float score;char addr30;student1=10001,Zhang Xin,M,19,90.5,Shanghai;,也可以采取声明类型与定义变量分开的形式,在定义变量时进行初始化:Student student2=10002,Wang
5、Li,F,20,98,Beijing;/Student是已声明的结构体类型,7.1.3 结构体变量的引用,在定义了结构体变量以后,可以引用这个变量。(1)student1=student2;,(2)可以引用一个结构体变量中的一个成员的值。引用结构体变量中成员的一般方式为结构体变量名.成员名例如可以这样对变量的成员赋值:student1.num=10010;,(3)不能将一个结构体变量作为一个整体进行输入和输出。coutstudent1;/错误只能对结构体变量中的各个成员分别进行输入和输出。coutstudent1.age;,(4)对结构体变量的成员可以像普通变量一样进行各种运算。例如 stud
6、ent2.scorestudent1.score;sumstudent1.scorestudent2.score;student1.age+;,例7.1 引用结构体变量中的成员。#include using namespace std;struct Date/声明结构体类型Dateint month;int day;int year;struct Student/声明结构体类型Studentint num;char name20;char sex;Date birthday;/声明birthday为Date类型的成员float score;student1,student2=10002,Wan
7、g Li,f,5,23,1982,89.5;/定义Student 类型的变量student1,student2,并对student2初始化,int main()student1=student2;/将student2各成员的值赋予student1的相应成员coutstudent1.numendl;/输出student1中的num成员的值coutstudent1.nameendl;/输出student1中的name成员的值coutstudent1.sexendl;/输出student1中的sex成员的值cout/student1.birthday.day/student1.birthday.ye
8、arendl;/输出student1中的birthday各成员的值coutstudent1.scoreendl;return 0;,运行结果如下:10002Wang Lif5/23/198289.5,1.定义结构体数组和定义结构体变量的方法相仿,定义结构体数组时只需声明其为数组即可。如struct Student/声明结构体类型Student int num;char name20;char sex;int age;float score;char addr30;Student stu3;/定义Student类型的数组stu,7.1.4 结构体数组每个数组元素都是一个结构体类型的数据。,2.结
9、构体数组的初始化与其他类型的数组一样,对结构体数组可以初始化。如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,1010,Zhongshan Road;,3.结构体数组应用举例下面举一个简单的例子来说明结构体数组的定义和引用。例7.2 对候选人得票的统计程序。设有3个候选
10、人,最终只能有1人当选为领导。今有10个人参加投票,从键盘先后输入这10个人所投的候选人的名字,要求最后输出这3个候选人的得票结果。,可以定义一个候选人结构体数组,包括3个元素,在每个元素中存放有关的数据。程序如下:,#include struct Person/声明结构体类型Person char name20;int count;,int main()Person leader3=Li,0,Zhang,0,Fun,0;/定义Person类型的数组,内容为3个候选人的姓名和当前的得票数int i,j;char leader_name20;/leader_name为投票人所选的人的姓名for(
11、i=0;ileader_name;/先后输入10张票上所写的姓名 for(j=0;j3;j+)/将票上姓名与3个候选人的姓名比较if(strcmp(leader_name,leaderj.name)=0)leaderj.count+;/如果与某一候选人的姓名相同,就给他加一票 coutendl;for(i=0;i3;i+)/输出3个候选人的姓名与最后得票数coutleaderi.name:leaderi.countendl;return 0;,运行情况如下:Zhang(每次输入一个候选人的姓名)LiFunLiZhangLiZhangLiFunWangLi:4(输出3个候选人的姓名与最后得票数)
12、Zhang:3Fun:2,7.2 共用体,7.2.1 共用体的概念,有时需要使几种不同类型的变量存放到同一段内存单元中。例如,可把一个整型变量、一个字符型变量、一个双精度型变量放在同一个地址开始的内存单元中(见图7.12)。,图7.12,以上3个变量在内存中占的字节数不同,但都从同一地址开始存放。这种结构称为共用体(union)(有些书译为联合)。,声明共用体类型的一般形式为union 共用体类型名成员表列;,定义共用体变量的一般形式为共用体类型名 共用体变量名;,当然也可在声明共用体类型的同时定义共用体变量。如union data int i;char ch;double d;a,b,c;“
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自定义 数据类型

链接地址:https://www.31ppt.com/p-6019638.html