第六章共用体和枚举类型.ppt

上传人:本田雅阁 文档编号:2261575 上传时间:2019-03-12 格式:PPT 页数:16 大小:181.51KB
返回 下载 相关 举报
第六章共用体和枚举类型.ppt_第1页
第1页 / 共16页
第六章共用体和枚举类型.ppt_第2页
第2页 / 共16页
第六章共用体和枚举类型.ppt_第3页
第3页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第六章共用体和枚举类型.ppt》由会员分享,可在线阅读,更多相关《第六章共用体和枚举类型.ppt(16页珍藏版)》请在三一文库上搜索。

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

2、长度等于全部成员所占内存之和。,x,x,二、共用体变量的引用 只能引用共用体变量的成员,如: union data a; a.i; a.ch; a.f;,注意: 共用体中的多个成员在某一时刻只有一个成员起作用!1,三、共用体类型数据的特点 、共用体变量中的值是最后一次存放的成员的值,如: a.i = 1; a.ch = a; a.f = 1.5; 完成以上三个赋值语句后,共用体变量的值是1.5,而 a.i=1和a.ch=a已无意义。 、共用体变量不能初始化,例: union data int i; char ch; float f; a=1,a, 1.5;,例 设有若干个人员的数据,其中有学生

3、和教师。学生 数据包括:姓名、号码、性别、职业、班级。教师数据 包括:姓名、号码、性别、职业、职务。如图: 要求输入人员数据,然后输出。 分析:学生数据的class(班级)和教师数据的position (职务)类型不同,但在同一表格中,使用“共用体”数据 结构。,struct int num; char name10; char sex; char job; union int class; /* 班级 */ char position10; /* 职务 */ category; ;,例6.6:定义存储某单位职工信息所需数据类型,每名职工信息包括职工号、姓名、性别、年龄、车间号(工人)/职务(

4、干部)。,struct employee long num; char name20; char sex; int age; ? category; ;,struct employee long num; char name20; char sex; int age; union int workshop; char position10; category; ;,例6.5 将一个整数按字节输出 void main() union int_char int i; char ch2; x; x.i=24897; printf(“i=%dni=%on“,x.i,x.i); printf(“ch0=

5、%o,ch1=%on ch0=%c,ch1=%cn“, x.ch0,x.ch1,x.ch0,x.ch1); ,6.5 枚举类型 如果一个变量只有几种可能的值,可以定义为枚举类型。 “枚举”:将变量可能的值一一列举出来。变量的值只能取 列举出来的值之一。 枚举类型定义格式: enum 类型名 枚举元素1,枚举元素2, 例: enum weekday sun, mon, tue, wed, thu, fri, sat;,枚举类型变量的说明: enum 枚举类型名 变量列表; 如: enum weekday workday,week_end; 定义了两个枚举变量:workday,week_end,

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

7、序加1。如,tue=2。 3、枚举值可以作判断,例、 if (workday = mon) if (workday sun) 4、整型与枚举类型是不同的数据类型,不能直接赋值,如: workday = 2; 但可以通过强制类型转换赋值,如: workday = (enum weekday)2;,6.6 用typedef定义类型 一、概念 关键字typedef用于定义一种新的数据类型,它代表已有数据类型,是已有数据类型的别名。例、 typedef int INTEGER; typedef float REAL; 定义新数据类型INTEGER,它代表已有数据类型int。 定义新数据类型REAL,它

8、代表已有数据类型float。 通过上述定义后,以下两行等价: int i, j ; float a, b; INTEGER i, j; REAL a, b;,二、典型用法: 1、定义一种新数据类型,专用于某种类型的变量,使程序更清晰 明了。 例1: typedef int COUNT 定义COUNT数据类型,专用于计数。 COUNT i,j; 2、简化数据类型的书写。 例2:typedef struct date int month; int day; int year; DATE ; DATE birthday; 例3:typdef union category CATE;,三、typedef 与 #define的区别 typedef int COUNT; #define COUNT int typedef定义一种新的数据类型(COUNT),它是已有类型(int) 的别名。在编译时COUNT类型与int类型相同。 #define定义一个宏(COUNT),在预编译时,把字符串COUNT替换 为字符串int。,第七次上机作业,实验名称:结构体和共用体的使用 实验目的:掌握结构体、公用体类型的定义及变量说明的方法,学会对两种类型数据的正确引用方法和简单应用。 实验内容: 必做 p208习题6.9,6.11 选做 p208习题6.10,6.13,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1