c7自定义数据类型

上传人:dja****22 文档编号:243009521 上传时间:2024-09-13 格式:PPT 页数:28 大小:146.50KB
返回 下载 相关 举报
c7自定义数据类型_第1页
第1页 / 共28页
c7自定义数据类型_第2页
第2页 / 共28页
c7自定义数据类型_第3页
第3页 / 共28页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第7章 自定义数据类型,7.1 结构体类型,7.2 共用体,7.3 枚举类型,7.4 用typedef声明类型,1,基本的数据类型:,int、float、double、char、bool、指针类型、引用类型,用户 自定义数据类型:,数组,结构体(structure)类型,共用体(union)类型,枚举(enumeration)类型,类(class)类型,2,有时需要将,不同类型的数据组合成一个有机的整体,,以供用户方便地使用。这些组合在一个整体中的数据是互相联系的。例如,一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项,都是这个学生的属性。见图7.1。,图7.1,7.1 结构体类型 7.1.1 结构体概述,3,利用,结构体,将若干个类型不同的数据项组合在一起。它相当于SQL Server中的,记录,(record)。,例如,定义一个学生的结构体:,struct Student,/声明一个结构体类型Student,int num;,/包括一个整型变量num,char name20;,/包括一个字符数组name,char sex;,/包括一个字符变量sex,int age;,/包括一个整型变量age,float score;,/包括一个单精度型变量,char addr30;,/包括一个字符数组addr,;,/最后有一个分号,4,struct是声明结构体类型时所必须使用的关键字。,Student是一个结构体类型名,与int、char、float、double等一样,可用来定义变量,只不过结构体类型需要事先由用户自己声明。,声明一个结构体类型的一般形式为:,struct 结构体类型名,成员表列;,;,成员表列的声明:,类型名 成员名;,5,声明结构体类型的位置一般在文件的开头,在所有函数(包括main函数)之前,以便本文件中所有的函数都能利用它来定义变量。,当然也可以在函数中声明结构体类型。,6,前面只是指定了一种结构体类型,它相当于一个模型,但其中并无具体数据,系统也不为之分配实际的内存单元。为了能在程序中使用结构体类型的数据,应当定义结构体类型的变量,并在其中存放具体的数据。,1. 定义结构体类型变量的方法,可以采取以下3种方法定义结构体类型的变量。,(1) 先声明结构体类型再定义变量名,如上面已定义了一个结构体类型Student,可以用它来定义结构体变量。如,Student student1, student2;,7.1.2 结构体类型变量,7,以上定义了student1和student2为结构体类型Student的变量,即它们具有Student类型的结构。如图7.2所示。,图7.2,8,(2) 在声明类型的同时定义变量,struct Student, int num;,char name20;,char sex;,int age;,float score;,char addr30;, student1,student2;,定义的一般形式为:,struct 结构体名,成员表列, 变量名表列;,9,(3) 直接定义结构体类型变量,struct /结构体类型名省略,成员表列, 变量名表列;,提倡使用先定义类型后定义变量的第(1)种方法。,struct,int num;,char name20;,char sex;,int age;,float score;,char addr30;, student1, student2;,10,说明:,(1) 类型与变量是不同的概念,不要混淆。只能对结构体变量中的成员赋值,而不能对结构体类型赋值。在编译时,是不会为类型分配空间的,只为变量分配空间。,(2) 对结构体中的成员,可以单独使用,它的作用与地位相当于普通变量。,(3) 成员也可以是一个结构体变量。,11,struct Date,/声明一个结构体类型Date,int month;,int day;,int year;,;,struct Student,/声明一个结构体类型Student,int num;,char name20;,char sex;,int age;,Date birthday;,char addr30;, student1, student2;,12,图7.3,(5) 结构体中的成员名可以与程序中的变量名相同,但二者没有关系。例如,程序中可以另定义一个整型变量num,它与student中的num是两回事,互不影响。,Student的结构见图7.3所示。,13,2. 结构体变量的初始化,Student student1=10001,Zhang Xin,M,19,90.5,Shanghai;,3. 结构体变量的引用,(1) 将一个结构体变量的值赋给另一个具有相同结构的结构体变量。如:,student1 = student2;,(2) 引用结构体变量中的一个成员的方式:,结构体变量名 . 成员名,如:,student1 . num = 1001;,14,(3) 如果成员本身也是一个结构体类型,则要用若干个成员运算符,一级一级地找到最低一级的成员。,如果想引用student1变量中的birthday成员中的month成员,则必须逐级引用:,student1 . birthday . month,15,(4) 不能将一个结构体变量作为一个整体进行输入和输出。如:,coutstudent1;,只能对结构体变量中的各个成员分别进行输入和输出。,(5) 对结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算种类)。,student2 . scorestudent1 . score;,sumstudent1 . scorestudent2 . score;,student1 . age+;,/ “.”运算符的优先级最高,+student1 . age;,16,(6) 可以引用结构体变量成员的地址,也可以引用结构体变量的地址。如,cout,/输出student1的首地址,cout,成员名,7.1.5 指向结构体变量的指针,也就是说,以下3种形式等价:, 结构体变量.成员名。,如stu.num。, (*p).成员名,。如(*p).num。, p-成员名,。如p-num。“-”称为指向运算符。,24,2. 用结构体变量和指向结构体变量的指针构成链表,链表是一种常见的重要的数据结构。下图表示最简单的一种链表(单向链表)的结构。,链表有一个“头指针”变量,图中以head表示,它存放一个地址。该地址指向一个元素。链表中的每一个元素称为“结点”,每个结点都应包括两个部分: 一是用户需要用的实际数据,二是下一个结点的地址。,25,链表中的各个结点不是通过,new,和,delete,动态建立和释放。而是事先申请好的单元,但删除某节点时,不能释放空间。,静态链表的建立,26,链表中的各个结点通过,new,和,delete,动态建立和释放。,动态链表的建立,27,本章到此结束,谢 谢!,28,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!