《第11章共用体和枚举(1学时).ppt》由会员分享,可在线阅读,更多相关《第11章共用体和枚举(1学时).ppt(22页珍藏版)》请在三一办公上搜索。
1、计算机程序设计,第十一章 结构体、共用体、枚举,之,信息科学与工程学院计算机系赵秀岩,温故,结构体,结构体类型的定义,结构体变量的定义,结构体变量的存储,结构体变量的初始化,结构体变量的引用,结构体数组,结构体指针,结构体应用举例,struct studentint num;char class10;char name20;char sex;int age;int score;,struct studentint num;char class10;char name20;char sex;int age;int score;struct student student1,student2;,s
2、truct studentint num;char class10;char name20;char sex;int age;int score;struct student student1=10001,”jizi041”,”zhangyu”,M,20,98;,本节内容,共用体,枚举,问题的提出,共用体,思考:用什么数据类型来存储上述表格?“年级/职称”列数据类型特点?,共用体,共用体的概念,需要:把不同类型的变量存放到同一段内存单元;目的:节约内存或对同一段内存单元的数据按不同类型处理;则:需要构造“共用体”数据结构类型,共用体也称为“联合(体)”,共用体类型的定义,union 共用体类型
3、名数据类型 成员1;数据类型 成员2;数据类型 成员3;数据类型 成员4;,union dataint i;float f;char ch;,共用体定义的一般形式,共用体定义举例,共用体类型变量的定义,union dataint i;float f;char ch;union data d1;,union dataint i;float f;char ch;d1;,unionint i;float f;char ch;d1;,共用体数据的存储,“共用体”:各成员占相同的起始地址,所占内存长度等于最长的成员所占内存。可以用Sizeof来测量。,提示:此处与结构体变量的存储比较记忆!,共用体变量的
4、引用,只能引用共用体变量的成员,如、union dataint i;float f;char ch;union data a;,a.i;a.ch;a.f;,共用体变量的引用,union dataint i;float f;char ch;main()union data a;a.i=3;a.f=3.14;a.ch=a;printf(%d,%f,%c,a.i,a.f,a.ch);,union1.c,共用体变量中的值是最后一次存放的成员的值;,共用体类型数据的特点,共用体变量不能整体初始化,因为共用体类型的变量中的成员每一时刻只能有一个有效,故同时赋值无意义;,union data int i;c
5、har ch;float f;a=1,a,1.5;,共用体应用举例,编程建立一个教师学生登记表,其中包括编号、姓名身份(student、student)、职称。如果身份是“student”,职称为年级(1、2、3),如果身份是“teacher”,职称为职称(讲师、教授等)。(5条记录)。,实例剖析,表格用哪种数据类型表示?,“职称”字段有几种数据类型?如何表示?,表格中的5条记录如何表示?,结构体,结构体数组,共用体,结构体、共用体的构造,struct personint num;char name20;char job10;unionint grade;char position10;lev
6、el;,主函数代码,main()int i;struct person person5;for(i=0;i5;i+)scanf(%d%s%s,问题的提出,枚举类型,生日:1,2,3,4,531,星期:sun,mon,tue,wed,thu,fri,sat,枚举:,将变量可能的值一一列举出来。变量的值只能取列举出来的值之一。,枚举类型定义,enum weekday sun,mon,tue,wed,thu,fri,sat;,说明:,enum:枚举类型定义的关键字;weekday:枚举类型名;枚举元素:sun,mon,tue,wed,thu,fri,sat,枚举元素,枚举元素是常量:,在编译器中,按
7、定义的顺序取值0、1、2、.。,枚举元素是常量,因此不能赋值:,枚举值可以作判断:,枚举元素的值也可以在定义时指定:,例:if(weekday=mon).if(weekday sun).,如:sun=0;mon=1;,enum weekday sun7,mon1,tue,wed,thu,fri,sat;,其他枚举元素的值顺序存取:tue是2,wed是3,依次类推,枚举类型应用举例,婚礼上的谎言,三对情侣举办集体婚礼,三个新郎为zhang,wang,li,三个新娘是ding,cao,meng。有人想知道谁和谁结婚,于是就问新人中的三位,得到如下回答:zhang说他和ding结婚,ding说她的未婚夫是li,li说他和meng结婚。事后知道他们说的都是假话。那究竟谁和谁结婚?,新郎取值:zhang,wang,li,新娘取值:ding,cao,meng,算法分析,定义一个枚举类型,enum brideding1,cao,meng;,定义三个枚举类型变量,enum bride zhang,wang,li;,确定关系,若张与丁结婚,表示成zhangding;,有如下已知条件:,Zhang!=ding;Li!=ding;li!=meng;zhang!=wang&wang!=li&li!=zhang,程序代码,结束,Thank you very much!,