C语言从入门到精通 .ppt
《C语言从入门到精通 .ppt》由会员分享,可在线阅读,更多相关《C语言从入门到精通 .ppt(33页珍藏版)》请在三一办公上搜索。
1、第 10 章 共用体与枚举类型,10.1 共用体类型与共用体变量,返回,C语言程序设计教程,10.2 共用体变量的引用,10.3 共用体变量的应用,10.4 位运算与位段结构,10.5 枚举类型,10.6 类型定义,10.1 共用体类型与 共用体变量,共用体是C的由用户定义的数据类型。共用体把不同类型的数据项组成一个整体,这些不同类型的数据项在内存中所占用的起始单元是相同的。,1.共用体类型的定义共用体类型定义用关键字union标识,形式为:,下一页,第10章 共用体与枚举类型,上一页,union 标识符 成员说明列表;,标识符给出共用体名,是共用体类型名的主体,定义的共用体类型由“union
2、 标识符”标识。例如,定义一个共用体类型,要求包含一个整型成员,一个字符型成员和一个单精度型成员:union icfint i;char c;float f;,下一页,第10章 共用体与枚举类型,上一页,2 共用体变量的定义,(1)先定义共用体类型,再定义共用体变量:union 共用体名 成员表;union 共用体名 变量表;,例如:union data int i;char ch;float f;union data a,b,c;,下一页,第10章 共用体与枚举类型,上一页,(2)定义共用体类型的同时定义共用体变量,例如:union data int i;char ch;float f;a,
3、b,c;,下一页,第10章 共用体与枚举类型,上一页,union 共用体名 成员表 变量表;,(3)定义共用体类型时,省略共用体类型名,同时定义共用体类型变量,union 成员表 变量表;,第10章 共用体与枚举类型,例如:union int i;char ch;float f;a,b,c;,返回,10.2 共用体变量的引用,共用体变量不能直接使用,只能使用里面的某个成员,其成员同样通过点运算描述。形式为:共用体变量名.成员名 例如,定义上面共用体类型变量a,a占有4个字节的空间,a.i 表示其整型成员,a.ch表示其字符型成员,a.f表示其单精度型成员。,下一页,第10章 共用体与枚举类型,
4、上一页,(1)共用体变量中,可以包含若干个成员及若干种类型,但共用体成员不能同时使用。在每一时刻,只有一个成员及一种类型起作用,不能同时引用多个成员及多种类型。,下一页,第10章 共用体与枚举类型,上一页,说明,(2)共用体变量中起作用的成员值是最后一次存放的成员值,即共用体变量所有成员共用同一段内存单元,后来存放的值将原先存放的值覆盖,故只能使用最后一次给定的成员值。如:a.i=278,a.ch=D,a.f=5.78;不能企图通过下面的printf函数得到a.i和a.ch的值:printf(“%d,%c,%f”,a.i,a.ch,a.f);但能得到a.f的值。,(3)共用体变量的地址和它的各
5、个成员的地址相同。(4)不能企图引用共用体变量名来得到某成员的值。(5)共用体变量不能作函数参数,函数的返回值也不能是共用体类型。(6)共用体类型和结构体类型可以相互嵌套,共用体中成员可以为数组,甚至还可以定义共用体数组。,下一页,第10章 共用体与枚举类型,上一页,写出下列程序的执行结果,main()union exx int a,b;structint c,d;lpp;e=10;e.b=e.a+20;e.lpp.c=e.a+e.b;e.lpp.d=e.a*e.b;printf(“%d,%dn”,e.lpp.c,e.lpp.d);,第10章 共用体与枚举类型,例10.1,运行结果:60,36
6、00,返回,设有若干教师的数据,包含有教师编号、姓名、职称,若职称为讲师,则描述他们的所讲课程,若职称为教授,则描述他们所写论文数目。,下一页,第10章 共用体与枚举类型,上一页,10.3 共用体变量的应用,例10.2,点击,查看程序请,10.4 位运算与位段结构,位是指二进制数的一位,其值为0或1。位段以位为单位定义结构体(或共用体)中成员所占存储空间的长度。含有位段的结构体类型称为位段结构。,下一页,第10章 共用体与枚举类型,上一页,10.4.1 位运算 在用位运算符进行数的运算时,数是以补码的形式参加运算的。,1.位运算(主要有:&、|、),(1)&(按位“与”)运算规则为:0&0=0
7、,0&1=0,1&0=0,1&1=1例如,-5&3的值为3。其中-5的补码(为简便起见,用8位二进制表示)为1111 1011,3的补码为0000 0011,按位与的结果为0000 0011,即值为十进制数3。,下一页,第10章 共用体与枚举类型,上一页,(2)|(按位“或”),运算规则为:0|0=0,0|1=1,1|0=1,1|1=1例如,-5|3的值为-5。-5与3相位或后得11111011,其真值为-0000101,即-5。,(3)(按位“异或”)运算规则为:00=0,01=1,10=1,11=0例如,-53的值为-8。(4)(按位“取反”)运算规则为:0=1,1=0例如,7的值为-8。
8、(5)(“左移”)例如,32,将3左移2位,右边(最低位)补0,结果为12,相当于322的结果。,下一页,第10章 共用体与枚举类型,上一页,(6)(“右移”)移动对象为正数时,高位补0。为负数时,逻辑右移,高位补0;算术右移,高位补1。Turbo C采用的是算术右移,有的C语言版本则采用逻辑右移。例如,-32,将3右移2位,左边(最高位)补1,结果为-1。,下一页,第10章 共用体与枚举类型,上一页,10.4.2 位段结构,位段结构也是一种结构体类型,只不过其中含有以位为单位定义存储长度的整数类型位段成员。采用位段结构既节省存储空间,又可方便操作。,位段结构中位段的定义格式为:unsigne
9、d:例如:struct bytedataunsigned a:2;/*位段a,占2位*/unsigned:6;/*无名位段,占6位,但不能访问*/unsigned:0;/*无名位段,占0位,表下一位段从下一字边界开始*/unsigned b:10;/*位段b,占10位*/int i;/*成员i,从下一字边界开始*/data;,下一页,第10章 共用体与枚举类型,上一页,(1)一个位段必须存储在同一存储单元(即字)之中,不能跨两个单元。如果其单元空间不够,则剩余空间不用,从下一个单元起存放该位段。(2)可以通过定义长度为0的位段的方式使下一位段从下一存储单元开始。,下一页,第10章 共用体与枚举
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言从入门到精通 语言 入门 精通
链接地址:https://www.31ppt.com/p-5426236.html