第11章共作体及其它数据类型.ppt
《第11章共作体及其它数据类型.ppt》由会员分享,可在线阅读,更多相关《第11章共作体及其它数据类型.ppt(24页珍藏版)》请在三一文库上搜索。
1、第11讲 共用体及 其它数据类型,11.1 共用体,11.2 枚举类型,11.3 用typedef定义类型,11.4 位段结构,11.1 共用体,11.1 共用体,一. 共用体的概念,当需要把不同类型的变量存放到同一段内存单元,或对同一段内存单元的数据按不同类型处理,则需要使用“共用体”数据结构。,共用体数据类型是指将不同的数据项组织为一个整体,它们在内存中占用同一段存储单元。,1. 共用体类型定义,共用体类型定义的一般形式: union 共用体名 成员表列 ;,2000,2001,2002,2003,ch,i,f,例: union data char ch; int i; float f;
2、;,覆盖技术,11.1 共用体,2. 定义共用体类型的变量,(1)先定义类型,再定义变量,例如: union data /*共用体类型定义*/ int i; char ch; float f; ; union data a,b,c;/*共用体类型变量定义*/,11.1 共用体,(2)定义类型时同时说明变量,例如: union data int i; char ch; float f; a,b,c; (3)不定义类型名而直接定义变量,例如: union int i; char ch; float f; a,b,c;,11.1 共用体,二. 共用体变量的引用方式,对共用体变量的引用,是通过其成员的
3、引用来实现的。,a.i /*引用共用体变量中的成员i,a.i就相当于一个整型变量*/ a.ch /*引用共用体变量中的成员ch,a.ch就相当于一个字符变量*/ a.f /*引用共用体变量中的成员f,a.f就相当于一个实型变量*/,不能对共用体变量进行整体的输入输出,例如: printf(”%d”,a);,11.1 共用体,【例11-1】共用体变量引用。 #include void main() union char a; int b; long c; uu; uu.a=0x61; printf(”n1:a=%x,b=%x,c=%lx”,uu.a,uu.b,uu.c); uu.b=0x7656
4、; printf(”n2:a=%x,b=%x,c=%lx”,uu.a,uu.b,uu.c); uu.c=0x12345678; printf(”n3:a=%x,b=%x,c=%lx”,uu.a,uu.b,uu.c); ,11.1 共用体,三. 共用体变量的应用,【例11-2】设有若干个人员的数据,其中有学生和教师。学生数据包括:姓名、号码、性别、职业、班级。教师数据包括:姓名、号码、性别、职业、职务;如表11-1所示。要求输入人员数据,然后输出。,11.1 共用体,分析: (1)学生和教师都属于复杂数据,应该定义为结构体类型。 (2)如果将学生和教师分别存放在不同的表格(即结构体数组)中,可以
5、定义两个不同类型的结构体数组。 (3)如果将学生和教师存放在同一表格(即结构体数组)中,可将“班级”和“职务”作为两个成员。但这样一来,对于学生,“职务”成员就闲置了,对于教师“班级”成员就闲置了,从而导致存储空间的浪费。最好的解决办法就是使“职务”和“班级”占据同一存储单元,对于教师,在该存储单元写入其“职务”,对于学生,在该存储单元写入“班级”。也就是说,定义一个共用体类型的变量。,11.1 共用体,11.2 枚举类型,在处理实际问题时,常常要涉及到一些非数值性数据,而这些数据难以用前面介绍的标准类型准确描述,只好采用一些替代方法。, 性别有男女之分,用整数0、1分别表示;,例如:, 红、
6、橙、黄、绿、青、蓝、紫七种颜色,用1、2、3、4、5、6、7分别表示;, 一周有七天,以0、1、2、3、4、5、6分别表示;一年有12个月,用112分别表示。,11.2 枚举类型,显然,这种用数值代码来代表某一具体非数值数据的方法在程序设计中属于个别约定,虽可采用,但使用起来有诸多的不便:,一方面这种描述方法不易明确数据与代码的对应关系,不直观,可读性差;,另一方面,这些数值代码的整数形式容易混淆其真实含义,对这些数字代码进行的某些语法正确的运算,可能毫无意义,更可能导致不必要的错误。,所谓枚举,是将具有相同属性的一类数据值一一列举。,枚举类型是ANSI C新标准所增加的,它是C语言中的简单类
7、型而非构造类型,它的值域是有穷的,可以一一列举出来,变量的取值只限于列举出来的值的范围。,11.2 枚举类型,一. 枚举类型的定义,1. enum 枚举类型名 标识符1,标识符2,标识符n;,enum是枚举类型定义的关键字,枚举类型名是用户命名的标识符,它与enum构成枚举类型的标识符,花括号中“标识符1,标识符2,标识符n”是所定义枚举类型的全部取值,通常称这些标识符为“枚举元素“或“枚举常量”。这些标识符是用户定义的标识符,一般是所代表事物的名称,但这些标识符并不自动地代表事物本身。,例如,enum colorred,blue,green,black;,11.2 枚举类型,用户可根据需要在
8、定义时直接指定某一枚举元素的编号,从而改变量系统默认的编号。例如: enum week sun=7,mon,tue=2,wed,thu,fri,sat; 则sun的序号为7,mon的序号为8, tue的序号为2, wed的序号为3, thu的序号为4,fri的序号为5,sat的序号为6。,2. 枚举类型是有序类型,一般地,枚举类型中各枚举元素按定义时的先后次序分别编号为0、1、2、.、n-1。,例如:,redblue 值为真,各枚举元素可根据其序号进行大小比较和相应的运算,green-red,值为2,11.2 枚举类型,二. 枚举类型的应用,1枚举类型变量的定义,enum male,femal
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 11 章共作体 其它 数据类型
链接地址:https://www.31doc.com/p-3419121.html