资源描述:
《c语言程序设计第6章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言程序设计第6章结构与联合类型6.1结构与联合类型的概述6.2结构类型6.3链表及其操作6.4位域与联合类型6.5枚举类型6.1结构与联合类型的概述结构类型是什么?由多个元素构成的集合,这些元素的每一个均有独立的变量名,采取按名访问方式,每个元素可以定义为不同的类型,称数据项。数据项的类型可以是基本类型,也可以是构造类型示例:在C语言中,用结构类型描述上述数据结构的格式如下:structstudent{charno[6];charname[10];charsex;intgrade[4];};6.1结构与联合类型的概述联合类型是什么?联合类
2、型的定义格式与结构类型相似,但其成员变量的内存分配方式不同,联合类型的所有成员不论其类型和大小,均共享使用同一块内存单元下图可帮助读者理解不同成员共享内存的方法:6.1结构与联合类型的概述例如,要进行学生情况调查,大学生的调查项目为专业,而中学生的调查项目为身高,其它项目均相同,这时可以使用联合方式来实现。调查表格式如下:C语言可利用联合类型表格式中的共项栏目:专业/身高项目,定义方法如下:structsurvey{charname[10];...union{charmajor[20];intheight;}item;};6.2.1结构类型与结
3、构变量结构类型结构可以使用typedef定义为类型,具体格式如下:typedefstruct{成员定义列表}结构类型名;注:保留字struct后也可以取类型名,这主要用于递归定义中示例:typedefstruct{intyear,month,day;}Date;Dated1,d2,d3;d1.year=2000;d2.month=3;d3.day=15;注:d1,d2,d3为Date类型的变量6.2.1结构类型与结构变量结构变量的定义有三种方式:1)先定义类型再定义变量typedefstruct{成员定义列表}结构类型名;结构类型名变量名={初始
4、化值表};2)在定义类型的同时定义变量struct结构类型名{成员定义列表}变量名表;3)不定义类型直接定义结构变量struct{成员定义列表}变量名表;注:定义变量时没有给出结构类型名,该结构类型只能定义一次结构变量6.2.1结构类型与结构变量示例:1)typedefstruct{charno[6];charname[10];charsex;intgrade[4];}student;studenta={"02001","David",'M',{80,75,85,80}};2)structstudent{charno[6];charname[1
5、0];charsex;intgrade[4];}a,b;3)struct{charno[6];charname[10];charsex;intgrade[4];}a,b;6.2.2结构变量的基本操作结构变量的使用可以从两种情况考虑:1.使用结构变量中的成员使用结构变量中的成员的格式:结构变量名.成员变量名例如:strcpy(a.no,"02001");a.age=30;a.birthday.month=3;(a.birthday.year)=1985;(a.birthday).day=2;2.直接使用结构变量结构变量可以作为一个
6、整体使用,主要的操作有:复制和作为函数参数。例如:structstudenta={"02001","john"},b={"02002","john"};if(a!=b)a=b;6.2.2结构变量的基本操作例6.1编写程序完成结构变量的输入输出(一)#includetypedefstruct{intmonth,day,year;}Date;typedefstruct{charno[6];charname[10];Datebirthday;}Student;Studentstud;/*全局变量*/voidmain(){char
7、ch;do{printf("FunctionMenu");printf("============");printf("1.InputData");printf("2.OutputData");printf("0.Exit");ch=getch();switch(ch){case'1':readdata();break;/*输入数据到结构变量stud*/case'2':writedata();break;/*显示结构变量stud中数据*/}}while(ch!='0');}6.2.2结构变量的基本操作例6.1编写程序完
8、成结构变量的输入输出(二)voidreaddata(