共同体与枚举类型课件.ppt

共同体与枚举类型课件.ppt

ID:57012957

大小:364.50 KB

页数:25页

时间:2020-07-26

共同体与枚举类型课件.ppt_第1页
共同体与枚举类型课件.ppt_第2页
共同体与枚举类型课件.ppt_第3页
共同体与枚举类型课件.ppt_第4页
共同体与枚举类型课件.ppt_第5页
资源描述:

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

1、10.1共用体类型与共用体变量10.2共用体变量的引用10.3共用体变量的应用10.4位运算与位段结构10.5枚举类型10.6类型定义第十章共同体与枚举类型10.1共用体类型与共用体变量在某些特殊应用中,有时需要将几种不同类型的变量存放到同一段内存单元中,即多个数据值覆盖存储,但在任意时刻只能存储其中的一种数据,而不能同时存放多种数据。这种使几个不同的变量共同占用一段内存单元的结构,称为“共用体”类型的结构。共用体也是由用户定义的数据类型。1.共用体类型的定义共用体类型定义用关键字union标识,一般形式为:union标识符{成员说

2、明列表};例如,定义一个共用体类型uniondata,包含一个整型成员,一个字符型成员和一个单精度实型成员:uniondata {  inti;  charch;  floatf; };注意区分:“共用体”类型:各成员占相同的起始地址,在内存中所占字节数等于最长的成员在内存中所占的字节数。“结构体”类型:各成员占不同的地址,在内存中所占字节数等于全部成员在内存中所占的字节数之和。2.共用体变量的定义,三种形式:例如:uniondata{inti;charch;floatf;};uniondataa,b,c;uniondata{inti;

3、charch;floatf;}a,b,c;union{inti;charch;floatf;}a,b,c;10.2共用体变量的引用共用体变量不能直接使用,只能使用里面的某个成员,其成员同样通过点运算描述。形式为:共用体变量名.成员名uniondata{inti;charch;floatf;}a;例如:左边定义的共用体类型的变量a,a占有4个字节的内存空间,a.i表示其整型成员,a.ch表示其字符型成员,a.f表示其单精度型成员。但在同一时刻只有一个成员有效。说明:(1)共用体变量中,可以包含若干个成员及若干种类型,但共用体成员不能

4、同时使用。在每一时刻,只有一个成员起作用,不能同时引用多个成员。(2)共用体变量中起作用的成员值是最后一次存放的成员值,因为共用体变量所有成员共同占用同一段内存单元,后来存放的值将原先存放的值覆盖,故只能使用最后一次给定的成员值。如:若有语句序列a.i=27;a.ch=’D’;a.f=5.78;不能企图通过下面的printf函数得到a.i和a.ch的值:printf(“%d,%c,%f”,a.i,a.ch,a.f);只能得到a.f的值。共用体变量的引用举例main(){e.b=e.a+20;e.x.c=e.a+e.b;e.x.d=e.

5、a*e.b;printf(″%d,%d″,e.x.c,e.x.d);}程序运行结果如下:60,3600uniondata{inta,b;struct{intc;intd;}x;}e={10};10.3共用体变量的应用uniontask{charcname[10];/*所讲课程*/intnum;/*论文数目*/};例如:设有若干教师的数据,包含有教师编号、姓名、职称,若职称为讲师,则描述他们的所讲课程,若职称为教授,则描述他们所写论文数目。structteachers{intno;/*编号*/charname[12];/*姓名

6、*/charzc;/*职称*/uniontaskx;/*可变字段,为所讲课程或论文数目*/}teach[3];#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.cname);elseif(teach[i].zc==‘P’)scanf(”%d”,&teach[i].x.num);els

7、e{printf(”inputdataerror”);exit(0);}}for(i=0;i<3;i++){printf(format,teach[i].no,teach[i].name,teach[i].zc);if(teach[i].zc==‘L’)printf(”%s”,teach[i].x.cname);elseif(teach[i].zc==‘P’)printf("%d",teach[i].x.num);elseprintf(″dataerror″);}}10.4位运算数的补码表示用补码表示数时,正

8、数的补码是它本身。负数的补码是最高位(用来表示符号,0表示正数,1表示负数,称为符号位)为1,其余各位(数值位)先按位取反(即0变为1,1变为0),再在最低位加1。由补码求真值(即实际二进制数)时,若符号位

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

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

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