c7自定义数据类型市公开课一等奖省赛课获奖课件_第1页
c7自定义数据类型市公开课一等奖省赛课获奖课件_第2页
c7自定义数据类型市公开课一等奖省赛课获奖课件_第3页
c7自定义数据类型市公开课一等奖省赛课获奖课件_第4页
c7自定义数据类型市公开课一等奖省赛课获奖课件_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

第7章自定义数据类型7.1结构体类型7.2共用体7.3枚举类型7.4用typedef申明类型c7自定义数据类型第1页基本数据类型:int、float、double、char、 bool、指针类型、引用类型用户自定义数据类型:

数组 结构体(structure)类型 共用体(union)类型 枚举(enumeration)类型

类(class)类型c7自定义数据类型第2页有时需要将不一样类型数据组合成一个有机整体,以供用户方便地使用。这些组合在一个整体中数据是相互联络。比如,一个学生学号、姓名、性别、年纪、成绩、家庭地址等项,都是这个学生属性。见图7.1。 图7.17.1结构体类型

7.1.1结构体概述c7自定义数据类型第3页利用结构体将若干个类型不一样数据项组合在一起。它相当于SQLServer中统计(record)。比如,定义一个学生结构体:structStudent

//申明一个结构体类型Student{ intnum;

//包含一个整型变量num

charname[20];

//包含一个字符数组name

charsex;

//包含一个字符变量sex

intage;

//包含一个整型变量age

floatscore;

//包含一个单精度型变量

charaddr[30];

//包含一个字符数组addr};

//最终有一个分号c7自定义数据类型第4页struct是申明结构体类型时所必须使用关键字。Student是一个结构体类型名,与int、char、float、double等一样,可用来定义变量,只不过结构体类型需要事先由用户自己申明。申明一个结构体类型普通形式为:struct结构体类型名{ 组员表列;};组员表列申明:类型名组员名;c7自定义数据类型第5页申明结构体类型位置普通在文件开头,在全部函数(包含main函数)之前,方便本文件中全部函数都能利用它来定义变量。当然也能够在函数中申明结构体类型。c7自定义数据类型第6页前面只是指定了一个结构体类型,它相当于一个模型,但其中并无详细数据,系统也不为之分配实际内存单元。为了能在程序中使用结构体类型数据,应该定义结构体类型变量,并在其中存放详细数据。1.定义结构体类型变量方法能够采取以下3种方法定义结构体类型变量。(1)先申明结构体类型再定义变量名如上面已定义了一个结构体类型Student,能够用它来定义结构体变量。如Studentstudent1,student2;7.1.2结构体类型变量c7自定义数据类型第7页以上定义了student1和student2为结构体类型Student变量,即它们含有Student类型结构。如图7.2所表示。图7.2c7自定义数据类型第8页(2)在申明类型同时定义变量structStudent{ intnum; charname[20]; charsex; intage; floatscore; charaddr[30];}student1,student2;

定义普通形式为:struct结构体名{ 组员表列}变量名表列;c7自定义数据类型第9页(3)直接定义结构体类型变量struct//结构体类型名省略{ 组员表列}变量名表列;提倡使用先定义类型后定义变量第(1)种方法。struct{ intnum; charname[20]; charsex; intage; floatscore; charaddr[30];}student1,student2;c7自定义数据类型第10页说明:(1)类型与变量是不一样概念,不要混同。只能对结构体变量中组员赋值,而不能对结构体类型赋值。在编译时,是不会为类型分配空间,只为变量分配空间。(2)对结构体中组员,能够单独使用,它作用与地位相当于普通变量。(3)组员也能够是一个结构体变量。c7自定义数据类型第11页structDate//申明一个结构体类型Date{ intmonth; intday; intyear;};structStudent//申明一个结构体类型Student{ intnum; charname[20]; charsex; intage; Datebirthday; charaddr[30];}student1,student2;c7自定义数据类型第12页图7.3(5)结构体中组员名能够与程序中变量名相同,但二者没相关系。比如,程序中能够另定义一个整型变量num,它与student中num是两回事,互不影响。Student结构见图7.3所表示。c7自定义数据类型第13页2.结构体变量初始化Studentstudent1={10001,"ZhangXin",'M',19,90.5,"Shanghai"};3.结构体变量引用(1)将一个结构体变量值赋给另一个含有相同结构结构体变量。如:student1=student2;(2)引用结构体变量中一个组员方式:

结构体变量名.组员名 如:student1.num=1001;c7自定义数据类型第14页(3)假如组员本身也是一个结构体类型,则要用若干个组员运算符,一级一级地找到最低一级组员。假如想引用student1变量中birthday组员中month组员,则必须逐层引用:

student1.birthday.monthc7自定义数据类型第15页(4)不能将一个结构体变量作为一个整体进行输入和输出。如:cout<<student1;只能对结构体变量中各个组员分别进行输入和输出。(5)对结构体变量组员能够像普通变量一样进行各种运算(依据其类型决定能够进行运算种类)。 student2.score=student1.score; sum=student1.score+student2.score; student1.age++;//“.”运算符优先级最高 ++student1.age;c7自定义数据类型第16页(6)能够引用结构体变量组员地址,也能够引用结构体变量地址。如

cout<<&student1;

//输出student1首地址

cout<<&student1.age;

//输出student1.age地址结构体变量地址主要用作函数参数,将结构体变量地址传递给形参。c7自定义数据类型第17页一个结构体变量中能够存放一组数据(如一个学生学号、姓名、成绩等数据)。假如有10个学生数据需要参加运算,显然应该用数组,这就是结构体数组。结构体数组与以前介绍过数值型数组不一样之处于于:每个数组元素都是一个结构体类型数据,它们都分别包含各个组员项。7.1.4结构体数组c7自定义数据类型第18页1.定义结构体数组和定义结构体变量方法相仿,定义结构体数组时只需申明其为数组即可。如structStudent//申明结构体类型Student{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};Studentstu[3];//定义Student类型数组stuc7自定义数据类型第19页structStudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu[3];struct{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu[3];或也能够直接定义一个结构体数组,如c7自定义数据类型第20页见图7.4。数组各元素在内存中连续存放,见图7.5示意。图7.4图7.5c7自定义数据类型第21页2.结构体数组初始化对结构体数组能够初始化。如structStudent{intnum; charname[20]; charsex; intage; floatscore; charaddr[30];}sty[3]={{10101,"LiLin",'M',18,87.5,"BeijingRoad"},{10102,"ZhangFun",'M',19,99,"ShanghaiRoad"},{10104,"WangMin",'F',20,78.5,"ZhongshanRoad"}};c7自定义数据类型第22页定义数组stu时,能够不指定元素个数,写成以下形式: stu[]={{…},{…},{…}};数组初始化也能够用以下形式:Studentstu[]={{…},{…},{…}};

//已事先申明了结构体类型Studentc7自定义数据类型第23页经过指向结构体变量指针引用结构体变量中组员 形式:指针变量->组员名7.1.5指向结构体变量指针也就是说,以下3种形式等价:①结构体变量.组员名。如stu.num。②(*p).组员名。如(*p).num。③p->组员名。如p->num。“->”称为指向运算符。c7自定义数据类型第24页2.用结构体变量和指向结构体变量指针组成链表链表是一个常见主要数据结构。下列图表示最简单一个链表(单向链表)结构。链表有一个“头指针”变量,图中以head表示,它存放一

温馨提示

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

评论

0/150

提交评论