资源描述:
《C语言中-结构体和联合体使用.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十章结构体与联合体结构体的定义、声明、初始化结构体成员的访问结构体变量的复制与比较结构体与数组、函数联合体概述问题:一个变量可以表示一种数据类型的数据项。一个数组可以表示一组相同类型的数据项。如何表示一组不同类型的数据项呢?例如:如果我们需要保存以下信息作为一个信息整体:一个大小为20的字符数组一个整形数字一个浮点型数字概述为满足以上应用需求,提出结构体的概念结构体是一种机制能够封装不同类型的数据用于处理一组逻辑相关的数据项以一种有意义的方法来组织复杂的数据联合体是一种特殊的结构体为节省存储空间而存在几乎没有什么应用机会结构体的定义我们可以定义以下格式的结构体structma
2、n{charjob[20];intold;floatheight;};该结构体有3个数据字段,称为结构体成员每个成员可以属于不同的数据类型man是结构体的名字,称为结构体标记符定义结构体以后,可以使用标记符来声明属于该结构体的变量结构体的定义结构体定义的格式如下:struct结构体标记符{数据类型成员变量1;数据类型成员变量2;……};注意:结构体一般以分号结尾整个结构体是一条语句每个成员都有自己的名称和数据类型结构体标记符可以在随后的程序中声明结构体变量声明结构体变量定义了结构体,就可以声明这种类型的变量结构体变量的声明格式struct结构体标记符变量名1,变量名2;例:st
3、ructmanLiangYe;结构体成员本身不是变量,定义结构体时不会它们分配存储空间当声明结构体变量时,将为结构体变量分配存储空间。声明结构体变量可以将结构体的定义与变量的声明结合在一起,例如:structman{charjob[20];intold;floatheight;}LiangYe;此时,结构体的名字可以省略,例如:struct{charjob[20];intold;floatheight;}LiangYe;访问结构体成员LiangYe是一个结构体变量,它有多个成员,如何引用,如何赋值呢?在结构体中,变量与成员之间的关系使用成员运算符‘.’来建立。如:LiangYe
4、.oldLiangYe.height对变量的成员赋值,可以使用LiangYe.old=29;LiangYe.height=1.80;访问结构体成员例:定义一个结构体,保存从键盘输入每个人的信息(姓名、参加工作时间、工资),保存在结构体中,然后输出。structpersonal{charname[20];intday;intmonth;intyear;floatsalary;}main()访问结构体成员{structpersonalperson;scanf(“%s%d%d%d%f”,person.name,&person.day,&person.month,&person.yea
5、r,&person.salary);printf(“%s%d%d%d%f”,person.name,person.day,person.month,person.year,person.salary);}结构体的初始化结构体变量可以在编译时初始化例:main(){struct{intweight;floatheight;}student={75,1.80};}成员与初始化值必须一一对应不允许在声明时初始化结构体的初始化初始化多个结构体变量例:main(){structman{intweight;floatheight;};structmanstudent1={75,1.80
6、};structmanstudent2={75,1.80};}结构体的初始化初始化工作也可以在主函数外面进行例:structman{intweight;floatheight;}student1={75,1.80};main(){structmanstudent2={75,1.80};}结构体变量的复制与比较结构体变量可以使用‘=’进行复制例如:student1=student2;结构体变量不可以使用逻辑运算符进行操作以下操作是错误的:student1!=student2;student1==student2;结构体的比较必须使用逐个成员分别比较的方法单个成员的运算结构体成员的
7、运算与结构体成员的访问方法一样例如:LiangYe.old+=1;LiangYe.old++;结构数组我们使用以下结构体来表示一个人的属性structman{intold;floatheight;};如果要表示多个人呢?我们可以声明一个结构体数组,例如:structmanstudent[23];结构数组程序structman{intold;floatheight;};main(){structmanstudent[2]={{18,45},{19,48}}}结构数组举例structmarks{