共用体和枚举类型

共用体和枚举类型

ID:45930545

大小:279.16 KB

页数:16页

时间:2019-11-19

共用体和枚举类型_第1页
共用体和枚举类型_第2页
共用体和枚举类型_第3页
共用体和枚举类型_第4页
共用体和枚举类型_第5页
资源描述:

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

1、一、共用体的概念在C语言中,允许不同数据类型使用同一存储区域,共用体就是一种同一存储区域由不同类型变量共享的数据类型。例、把一个整型变量、一个字符型变量、一个实型变量放在同一个地址开始的内存单元中。共用体的定义形式:union共用体名{  成员列表; }变量列表;6.4共用体uniondata{inti;charch;floatf;}x;共用体与结构体有何不一样?structdata{inti;charch;floatf;};注意区分:“共用体”:各成员占相同的起始地址,所占内存长度等于最长的成员所占内存。“结构体”:各成员占不同的地址,所占内存

2、长度等于全部成员所占内存之和。ichfxfxich二、共用体变量的引用只能引用共用体变量的成员,如:uniondataa;a.i;a.ch;a.f;注意:共用体中的多个成员在某一时刻只有一个成员起作用!!1三、共用体类型数据的特点1、共用体变量中的值是最后一次存放的成员的值,如:a.i=1;a.ch='a';a.f=1.5;完成以上三个赋值语句后,共用体变量的值是1.5,而a.i=1和a.ch=‘a’已无意义。2、共用体变量不能初始化,例:uniondata{inti; charch; floatf; }a={1,'a',1.5};[例]设有若干

3、个人员的数据,其中有学生和教师。学生数据包括:姓名、号码、性别、职业、班级。教师数据包括:姓名、号码、性别、职业、职务。如图:要求输入人员数据,然后输出。分析:学生数据的class(班级)和教师数据的position(职务)类型不同,但在同一表格中,使用“共用体”数据结构。struct{intnum;  charname[10];  charsex;  charjob;union  {intclass;/*班级*/charposition[10];/*职务*/  }category;};例6.6:定义存储某单位职工信息所需数据类型,每名职工信息包

4、括职工号、姓名、性别、年龄、车间号(工人)/职务(干部)。structemployee{longnum;charname[20];charsex;intage;???category;};structemployee{longnum;charname[20];charsex;intage;union{intworkshop;charposition[10];}category;};例6.5将一个整数按字节输出voidmain(){unionint_char{inti;charch[2];}x;x.i=24897;printf("i=%di=%

5、o",x.i,x.i);printf("ch0=%o,ch1=%och0=%c,ch1=%c",x.ch[0],x.ch[1],x.ch[0],x.ch[1]);}6.5枚举类型如果一个变量只有几种可能的值,可以定义为枚举类型。“枚举”:将变量可能的值一一列举出来。变量的值只能取列举出来的值之一。枚举类型定义格式:enum类型名{枚举元素1,枚举元素2,……}例:enumweekday{sun,mon,tue,wed,thu,fri,sat};枚举类型变量的说明:enum枚举类型名变量列表;如:enumweekdayworkday,w

6、eek_end;定义了两个枚举变量:workday,week_end,它们只能取sun到sat之一,如、workday=mon;week_end=sun;sun、mon、....、sat称为“枚举元素”或“枚举常量”。说明:1、枚举元素是常量。在C编译器中,按定义的顺序取值0、1、2、...。例:workday=mon;printf("%d",weekday);输出整数1。2、枚举元素是常量,不是变量,因此不能赋值。sun=0;mon=1;但在定义枚举类型时,可以指定枚举常量的值,如:enumweekday{sun=7,mon=1,tue,wed

7、,thu,fri,sat};此时,tue、wed、...的值从mon的值顺序加1。如,tue=2。3、枚举值可以作判断,例、if(workday==mon)....if(workday>sun)....4、整型与枚举类型是不同的数据类型,不能直接赋值,如:workday=2;但可以通过强制类型转换赋值,如:workday=(enumweekday)2;6.6用typedef定义类型一、概念关键字typedef用于定义一种新的数据类型,它代表已有数据类型,是已有数据类型的别名。例、typedefintINTEGER;typedeffloatREAL

8、;定义新数据类型INTEGER,它代表已有数据类型int。定义新数据类型REAL,它代表已有数据类型float。通过上述定义后,以下两行

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

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

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