七章节结构与联合.ppt

上传人:sccc 文档编号:5352362 上传时间:2023-06-28 格式:PPT 页数:31 大小:172.03KB
返回 下载 相关 举报
七章节结构与联合.ppt_第1页
第1页 / 共31页
七章节结构与联合.ppt_第2页
第2页 / 共31页
七章节结构与联合.ppt_第3页
第3页 / 共31页
七章节结构与联合.ppt_第4页
第4页 / 共31页
七章节结构与联合.ppt_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《七章节结构与联合.ppt》由会员分享,可在线阅读,更多相关《七章节结构与联合.ppt(31页珍藏版)》请在三一办公上搜索。

1、第七章结构与联合,结构,结构是一种用户自定义类型,它由多个相同数据类型或不同数据类型的成员组成用户自定义类型中定义的每个变量称为数据成员,每个函数称为函数成员或成员函数,结构的定义,结构定义的格式:struct 结构类型名成员定义1;成员定义2;成员定义n;说明1、结构类型的定义以保留字struct开始2、结构类型名即定义的结构类型名称3、左右花括号之间的部分称为结构体4、结构类型中定义的成员可以是除本身结构类型以外的任何已有类型,也可以是任何已有类型(包括本身类型)的指针类型,例:struct Personchar name10;bool sex;int age;float pay;定义了一

2、个结构类型,类型名称为Person,结构类型中有四个不同数据类型的成员(注意:定义的不是变量,是一种类型)然后可用结构类型名作类型修饰符来定义结构类型的变量Person x,y;/定义了两个Person结构类型的变量。,结构类型定义举例,(1)struct Aint a,b,c;(2)struct Bchar ch;int x,y;double z;,(3)struct Cchar*cp;int a5;(4)struct Fdouble data;F*next;,结构类型中定义的成员可以是除本身结构类型以外的任何已有类型,也可以是任何已有类型(包括本身类型)的指针类型,结构变量的定义可采用三种

3、格式,一、用结构类型名定义变量:格式:struct 结构类型名 变量名=初始化数据或同类型变量名,结构类型名相当于类型修饰符初始化数据是由每一个成员值构成的初始化数据,也可以是同类型的变量名。,例:struct Arith char op;int a,b;/定义结构类型Arith x,y;/定义两个Arith结构类型的变量x,yArith z1=+,10,xx,z2=*,60,z3=z1;/定义变量z1,z2并初始化,二、定义结构类型的同时定义变量格式:struct 结构类型名成员定义1;成员定义2;成员定义n;变量名=初始化数据或同类型变量名,;,例:struct AAAchar s20;i

4、nt top;a1=“Microsoft”,0,a2=a1,a3,*ap;/以上语句在定义AAA结构类型的同时定义了三个变量a1,a2,a3及一个指针变量ap,且a1被初始化。,三、定义无名结构类型的同时定义变量格式:struct 成员定义1;成员定义2;成员定义n;变量名=初始化数据或同类型变量名,;这种格式没有类型名,因此必须在定义结构类型时定义变量,struct BBBchar name10;struct int yy,mm,dd;birth;bx=“xxk”,55,3,27;/结构类型BBB有两个成员,一个字符型数组成员name和一个无名结构类型成员birth(无名结构类型定义时定义了

5、成员),定义BBB结构类型的同时定义了该类型的变量bx,并初始化。,结构类型的声明,结构类型的声明即不完整定义不完整定义是指只给出定义的类型保留字(即struct)和类型标识符(即结构类型名)而不给出结构体就结束定义不完整定义只能作为指针类型使用并且必须在稍后给出它的完整定义,例:struct BB;/BB类型的不完整定义,即类型声明struct AAchar a;BB*b;/定义BB结构类型的指针;struct BB/给出BB的完整定义int b;AA a;/使用已定义的AA结构类型;,结构大小的计算,结构大小计算方法:所有成员占用空间大小的总和例:struct AAint*a;/一个成员是

6、整型指针,指针类型占用空间是4字节,因此结构类型AA占4字节。,例:struct BBint a;int b;/成员a,b是整型,因此结构类型BB占8字节struct CCchar*data;BB s;CC*link;/成员data占4字节,s是BB结构类型,占8字节,link是指向自身结构类型的指针,占4字节,因此结构类型CC占16字节,结构成员的访问操作,直接成员运算符(又称点运算符)直接成员运算符:.使用方法:结构变量.成员名例:结构变量x中有成员a,b,c,则访问成员a的方法:x.a若x的成员b中又有成员变量t,则访问成员变量t的方法:x.b.tvec5.name表示结构数组vec中第

7、5号元素的成员变量name,结构成员的访问操作,间接成员运算符()使用格式:结构指针变量指针所指向的结构类型数据的一个成员名例:指针p指向某结构数据,则p a是p指针所指向的结构数据的成员变量a,也可以等价地表示为(*p).a直接成员运算符与间接成员运算符的优先级很高(仅次于括号),结构变量的赋值,赋值运算符:=两边为同类型的结构变量功能(与一般变量的赋值相同):把右边变量的值拷贝到左边变量中;运算结果为左边变量的值;连续使用时结合性为从右向左。例:z1=z2=z3执行过程是:先把z1赋给z2,再把z2赋给z3,结果是z1、z2、z3三个结构变量中的成员值相同,结构数组保存和处理数据,已知人员

8、记录的结构如下:struct Person/结构类型名为Person char name10;/姓名 bool isMale;/性别 int age;/年龄 float pay;/工资;设计一程序,输入若干人员记录并保存在一个结构数组中。,输入函数定义(输入记录并保存在结构数组中,预处理略)Person a10;/定义全局结构数组a,存放人员记录void input(int n)coutx.name;/输入一个人的姓名(字符串)cink;/输入一个人的性别(1表示男,0表示女)x.isMale=(k!=0);/赋值时0转换成false,1转换成true cinx.agex.pay;/输入年龄和

9、工资 ai=x;/将结构变量x赋给ai,结构赋值,输出函数定义void input(int n)cout“从键盘上输入具有Person结构的”n“个记录”endl;for(int i=0;in;i+)coutai.name;/显示姓名 cout(ai.isMale?“男”:“女”);/显示性别 coutai.ageai.payendl;/显示年龄和工资,主函数void main()int n;coutn;input(n);output(n);,例7.2:从一个保存人员记录的结构数组中查找工资(pay域)最高的记录。查找函数定义void input(int n)int k=0;for(int i

10、=1;iak.pay)k=i;/循环结束后,下标为k的元素具有最大工资值 coutendl“显示数组a中具有最大工资值的记录:”endl;coutak.name(ak.isMale?“男”:“女”);coutak.ageak.payendl;,结构与函数,结构类型作为函数参数和函数返回值类型P211例,结构与链表,链表是结构类型的一种特殊情况,这种结构类型的对象称为结点这种结构类型有两个成员,一个是数据成员(结点的值域),另一个是指向自身结构的指针成员(结点的指针域)struct IntNodeint data;intNode*next;结点的值域data用于存储一个整数,指针域next用于指

11、向自身结构类型的数据(可存储下一个结点的地址),从而形成链表。,假定具有IntNode类型的四个结点值分别为48,56,72和 83,它们依次被链接起来,则对应的链表结构示意图为:,指向第一个结点的指针称为表头指针。第一个结点又称为表头结点。最后一个结点为表尾结点表尾结点的指针为空指针,后继结点:结点指针域所指向的结点称为该结点的后继结点前驱结点:该结点又称为其后继结点的前驱结点,当访问一个链表时,必须从表头指针出发顺序进行,只有第一个结点被访问后,才能根据第一个结点的指针域的值访问第二个结点,依次类推,表尾结点只能最后被访问到。因此链表具有顺序存取特性。,操作符重载,操作符重载函数定义单目操

12、作符重载函数的定义格式:返回类型 operator 单目操作符(一个用户自定义类型参数说明)函数体双目操作符重载函数的定义格式:返回类型 operator 双目操作符(第一个参数说明,第二个参数说明)函数体,操作符重载函数的调用单目操作符重载函数调用格式:单目操作符 实参等价于:operator 单目操作符(实参)双目操作符重载函数调用格式:第一个实参 双目操作符 第二个实参等价于:operator 双目操作符(第一个实参,第二个实参),联合,联合也是一种用户自定义的类型,它与结构类型相似,也由若干个数据成员组成。联合的特点:在任一时刻,联合中只有一个成员是可访问的,其余所有成员都是不可访问的。(结构中所有成员在任一时刻都是可访问的)联合类型对象所占存储空间的大小是所有数据成员所占存储空间的最大值。,联合的定义与使用,联合的定义和使用与结构类型相同不同点:匿名联合在联合类型的定义中,既没有给出类型名也没有给出变量也是有意义的,此时联合的成员可以直接使用。这种联合被称为匿名联合。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号