c7自定义数据类型_第1页
c7自定义数据类型_第2页
c7自定义数据类型_第3页
c7自定义数据类型_第4页
c7自定义数据类型_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、第7章 自定义数据类型7.1 结构体类型7.2 共用体7.3 枚举类型7.4 用typedef声明类型1基本的数据类型:int、float、double、char、bool、指针类型、引用类型用户 自定义数据类型:数组结构体(structure)类型共用体(union)类型枚举(enumeration)类型类(class)类型2有时需要将不同类型的数据组合成一个有机的整体,以供用户方便地使用。这些组合在一个整体中的数据是互相联系的。例如,一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项,都是这个学生的属性。见图7.1。图7.17.1 结构体类型 7.1.1 结构体概述3利用结构体将若干个类

2、型不同的数据项组合在一起。它相当于SQL Server中的记录(record)。例如,定义一个学生的结构体:struct Student /声明一个结构体类型Studentint num; /包括一个整型变量numchar name20; /包括一个字符数组namechar sex; /包括一个字符变量sexint age; /包括一个整型变量age float score; /包括一个单精度型变量char addr30; /包括一个字符数组addr; /最后有一个分号4struct是声明结构体类型时所必须使用的关键字。Student是一个结构体类型名,与int、char、float、doub

3、le等一样,可用来定义变量,只不过结构体类型需要事先由用户自己声明。声明一个结构体类型的一般形式为:struct 结构体类型名成员表列;;成员表列的声明:类型名 成员名;5声明结构体类型的位置一般在文件的开头,在所有函数(包括main函数)之前,以便本文件中所有的函数都能利用它来定义变量。当然也可以在函数中声明结构体类型。6前面只是指定了一种结构体类型,它相当于一个模型,但其中并无具体数据,系统也不为之分配实际的内存单元。为了能在程序中使用结构体类型的数据,应当定义结构体类型的变量,并在其中存放具体的数据。1. 定义结构体类型变量的方法可以采取以下3种方法定义结构体类型的变量。(1) 先声明结

4、构体类型再定义变量名如上面已定义了一个结构体类型Student,可以用它来定义结构体变量。如Student student1, student2;7.1.2 结构体类型变量7以上定义了student1和student2为结构体类型Student的变量,即它们具有Student类型的结构。如图7.2所示。图7.28(2) 在声明类型的同时定义变量struct Student int num; char name20; char sex; int age; float score; char addr30; student1,student2; 定义的一般形式为:struct 结构体名成员表列 变

5、量名表列;9(3) 直接定义结构体类型变量struct /结构体类型名省略 成员表列 变量名表列;提倡使用先定义类型后定义变量的第(1)种方法。struct int num; char name20; char sex; int age; float score; char addr30; student1, student2;10说明:(1) 类型与变量是不同的概念,不要混淆。只能对结构体变量中的成员赋值,而不能对结构体类型赋值。在编译时,是不会为类型分配空间的,只为变量分配空间。(2) 对结构体中的成员,可以单独使用,它的作用与地位相当于普通变量。 (3) 成员也可以是一个结构体变量。11

6、struct Date /声明一个结构体类型Dateint month;int day;int year;struct Student /声明一个结构体类型Studentint num;char name20;char sex;int age;Date birthday; char addr30; student1, student2; 12图7.3(5) 结构体中的成员名可以与程序中的变量名相同,但二者没有关系。例如,程序中可以另定义一个整型变量num,它与student中的num是两回事,互不影响。Student的结构见图7.3所示。132. 结构体变量的初始化Student studen

7、t1=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) 不能将一个结构体变量作

8、为一个整体进行输入和输出。如:coutstudent1;只能对结构体变量中的各个成员分别进行输入和输出。(5) 对结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算种类)。student2 . scorestudent1 . score; sumstudent1 . scorestudent2 . score; student1 . age+;/ “.”运算符的优先级最高+student1 . age;16(6) 可以引用结构体变量成员的地址,也可以引用结构体变量的地址。如cout&student1; /输出student1的首地址cout成员名7.1.5 指向结构体变量的指针也就是说,以下3种形式等价: 结构体变量.成员名。如stu.num。 (*p).成员名。如(*p).num。 p-成员名。如p-num。“-”称为指向运算符。242. 用结构体变量和指向结构体变量的指针构成链表链表是一种常见的重要的数据结构。下图表示最简单的一种链表(单向链表)的结构。链表有一个“头指针”变量,图中以head表示,它存放一个地址。该地址指向一个元素。链表中的每一个元素称为“结点”,每个结点都应包括两个部分: 一是用户需要用的

温馨提示

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

评论

0/150

提交评论