深 圳 职 业 技 术 学 院Shenzhen Polytechnic
计算机系乌云高娃 Wygw@21cn.com 第 70 页 共 83 页
第九单元:共用体,枚举
教学内容 共用体,枚举,用typedef定义类型)
教学目标
掌握共用体的结构和特点
掌握枚举的结构和特点
应知
typedef定义类型的意义
掌握共用体变量的定义和引用
了解在程序中枚举的应用
应会
阅读程序时能够理解typedef定义的类型
难点 共用体的存储特性
1,专业英语词汇
英文词汇 中文名
Enumerate 枚举
Define 定义
Union 联合(共用体)
教学方法
通过与结构体的对比学习共用体,对比的方面包括类型定义、变量定义、初始化赋值、成员引用、在内存中的存储方式、占据内存的存储空间
教学过程
1,共用体
解决问题,
1,采用共用体变量,使用bioskey( )函数(在头文件.h中)检测键盘输入
2,根据键盘扫描码定义共用体类型
3,union code{int key;char keycode[2];};
4,通过共用特性提取键盘扫描码的高位和低位
5,进一步判断是ASCII码键还是功能键
深 圳 职 业 技 术 学 院Shenzhen Polytechnic
计算机系乌云高娃 Wygw@21cn.com 第 71 页 共 83 页
2,枚举
解决下列问题(编制程序,演示分析),
1,今有5种色球各若干,每次取出三个,问得到三种不同色的球的取法分别是什么,共有多少种(exp11-13):(reference material)
2,五种色之一,并判断是否同色,应用枚举类型变量
3,判断不同颜色的组合,可用穷举法,一种一种可能性地试,设取出的球为 i,j,k,
要求 i!=j!=k
4,程序中应累计三种不同色球组合的次数,可设变量 n 为计数器
5,根据2,3步的分析,应设三层循环,每一层循环分别从red变到black
6,将每次不同的组合打印输出
3,用typedef定义类型
1,学生带着讨论问题读书,并且回答问题
学生容易出错的地方
在定义共用体变量之前不先进行共用体类型的定义
引用当前不活动的共用体成员
枚举的理解
问题与讨论
共用体
1,什么是共用体?
2,为什么使用共用体?
3,共用体将涉及到我们之前学过的什么内容?又有什么新内容?
4,共用体和结构体有什么联系及区别?二者所占据的内存单元如何计算?
5,共用体如何定义?
6,共用体如何引用?当共用体又处在结构体中时如何引用?
7,共用体中当前起作用的是哪一个成员?
什么是枚举?
1,为什么使用枚举?
深 圳 职 业 技 术 学 院Shenzhen Polytechnic
计算机系乌云高娃 Wygw@21cn.com 第 72 页 共 83 页
2,枚举将涉及到我们之前学过的什么内容?又有什么新内容?
3,枚举类型如何定义,枚举变量如何定义?
4,枚举如何引用?枚举元素的值有何特点?
5,在程序中如何使用枚举?
typedef定义
1,typedef的作用是什么?
2,typedef可以声明结构体,共用体和枚举类型吗?
3,typedef可以用来定义变量吗?
4,typedef定义了新的数据类型吗?
5,typedef和#define的区别是什么?
6,使用typedef有什么方便之处?
小结(可由问题与讨论方式给出)
所谓枚举是将变量的值一一列出来,变量的值只限于此
在C编译中,枚举元素按常量处理,其值按定义时的顺序分别取为0,1,2…,故其值可以用来进行比较
不能将一个整数直接赋给一个枚举变量
共用体采用覆盖技术
共用体变量不能用作函数参数
共用体变量可以出现在结构类型中,反之亦然
课后任务
读懂程序并调通五色球程序