C语言共用体与枚举.ppt

C语言共用体与枚举.ppt

ID:57650101

大小:170.00 KB

页数:31页

时间:2020-08-30

C语言共用体与枚举.ppt_第1页
C语言共用体与枚举.ppt_第2页
C语言共用体与枚举.ppt_第3页
C语言共用体与枚举.ppt_第4页
C语言共用体与枚举.ppt_第5页
资源描述:

《C语言共用体与枚举.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、12.1共用体类型与共用体变量12.2共用体变量的引用12.3共用体变量的应用12.4位运算与位段结构12.5枚举类型12.6类型定义第十二章共用体与枚举类型8/5/20211C语言程序设计教程12.1共用体类型与共用体变量共用体是由用户定义的数据类型。有时需要使几种不同类别的变量存放到同一段内存单元中,也就是使用覆盖技术,几个变量互相覆盖。这种使几个不同的变量共同占用一段内存单元的结构,称为“共用体”类型的结构。1.共用体类型定义的一般形式共用体类型定义用关键字union标识,形式为:union标识符{成

2、员说明列表};8/5/20212C语言程序设计教程标识符给出共用体名,是共用体类型名的主体,定义的共用体类型由“union标识符”标识。2.共用体变量的定义(1)先定义共用体类型,再定义共用体变量:union共用体名{成员表};union共用体名变量表;uniondata{inti;charch;floatf;};uniondataa,b,c;8/5/20213C语言程序设计教程(2)定义共用体类型的同时定义共用体变量union共用体名{成员表}变量表;uniondata{inti;charch;f

3、loatf;}a,b,c;(3)定义共用体类型时,省略共用体类型名,同时定义共用体类型变量union{成员表}变量表;union{inti;charch;floatf;}a,b,c;8/5/20214C语言程序设计教程注意区分:“共用体”变量:各成员占相同的起始地址,在内存中所占字节数度等于最长的成员在内存中所占的字节数。“结构体”变量:各成员占不同的地址,在内存中所占字节数等于全部成员在内存中所占的字节数之和。union{inti;charch;floatf;}b;struct{inti;charch;flo

4、atf;}a;8/5/20215C语言程序设计教程12.2共用体变量的引用共用体变量不能直接使用,和结构体变量一样只能使用里面的某个成员,其成员同样通过点运算描述。形式为:共用体变量名.成员名union{inti;charch;floatf;}a;例如:左边定义的共用体类型变量a,a占有4个字节的空间,a.i表示其整型成员,a.ch表示其字符型成员,a.f表示其单精度型成员。8/5/20216C语言程序设计教程说明:(1)共用体变量中,可以包含若干个成员及若干种类型,但共用体成员不能同时使用。在每一时刻,只

5、有一个成员及一种类型起作用,不能同时引用多个成员及多种类型。(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的值。8/5/20217C语言程序设计教程(3)共用体变量的地址和它的各个成员的地址相同。(4

6、)不能企图引用共用体变量名来得到某成员的值。(5)共用体变量不能作函数参数,函数的返回值也不能是共用体类型。(6)共用体类型和结构体类型可以相互嵌套,共用体中成员可以为数组,甚至还可以定义共用体数组。8/5/20218C语言程序设计教程例12.1写出下列程序的执行结果main(){unionexx{inta,b;struct{intc,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,%d”,e.lpp.c,e.lpp

7、.d);}程序运行结果如下:60,36008/5/20219C语言程序设计教程12.3共用体变量的应用例12.2设有若干教师的数据,包含有教师编号、姓名、职称,若职称为讲师,则描述他们的所讲课程,若职称为教授,则描述他们所写论文数目。unioncf{charclname[10];/*所讲课程*/intnum;/*论文数目*/};structteachers{intno;/*编号*/charname[12];/*姓名*/charzc;/*职称*/unioncfx;/*可变字段,为所讲课程或论文数目

8、*/}teach[3];8/5/202110C语言程序设计教程#defineformat″%d%s%c″main(){inti;for(i=0;i<3;i++){scanf(format,&teach[i].no,teach[i].name,&teach[i].zc);if(teach[i].zc==‘L’)scanf(”%s”,teach[i].x.clname);elsei

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。