




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第19章 共用体、枚举和位域,杨章伟 e-mail:,课程内容安排,共用体 枚举 位域 小结 习题,共用体,声明共用体类型,在程序中,有时为了节约内存空间,可以使用共用体来使多个变量共享一块内存。共用体与结构体类似,可以含有多个成员,其声明形式如下: union 共用体名 数据类型名 成员名1; 数据类型名 成员名2; 数据类型名 成员名3; ; 但与结构体结构不同的是,共用体的所有成员共享同一块内存,而结构体的每个成员都有自己的内存空间。一个共用体类型的字节长度为占用内存空间最多的成员变量的字节长度。,定义共用体变量,共有体变量的定义方法与结构体变量类似。可以先声明一个共用体类型,再使用该共用体类型来定义共用体变量;也可以直接定义共用体变量;还可以使用typedef来定义一个共用体类型别名,再使用共有体别名来定义共有体变量。仅以第三种形式为例,如下所示。 typedef union _data_u_t int a; char b; long long c; data_u_t; data_u_t v;,枚举,枚举类型是C语言中另一种高级类型。在前面已经学习了可以使用const常量和具名常量来代替程序中出现的常量数值,枚举类型也可以用来定义常量数值。,声明枚举类型,C语言使用枚举类型为这种情况下的常量替代提供了更好的解决方案。枚举类型是一组相关数据的集合,它可以在定义常量的同时,将这些常量结合在一个集合中加强彼此的关系。枚举类型的声明与结构体和共用体的声明略有不同,其形式如下: enum 枚举类型名 枚举成员1; 枚举成员2; 枚举成员3; 其中的枚举成员都为int型,如果没有显式赋值,系统会自动将所有枚举成员从0开始赋值,而后面的枚举成员依次比前一个大1。,位域,在一些任务中,需要处理的信息都只需要占用一个或几个二进制位,这种情况下,如果使用一般的数据结构进行处理,会占用额外的空间,并增加多余的处理时间。这时,可以使用C语言中的另一种数据结构“位域”(或称为“位段”)来处理该数据。 位域属于结构体,它允许在结构体内以位为单位将其空间划分为多个区域,并将其分配给结构体的各个成员。在程序中可以通过操作位域的各个成员来操作其中的区域。,位域的概念,利用位域可以使用较少的字节数来存储信息,其形式如下: struct 结构体名 /* 定义位域成员 */ unsigned 位域成员1 : 常量1; unsigned 位域成员2 : 常量2; int 位域成员3 : 常量3; int 位域成员4 : 常量4; /* 定义其他普通成员 */ 数据类型名 成员1; 数据类型名 成员2; ;,小结,本章学习了C语言中三种高级数据类型:结构体(struct)、共用体(union)和枚举(enum)。其中,结构体的应用十分广泛,需要重点掌握它的使用方法,包括结构体变量的使用、结构体数组的使用和结构体指针的使用;而枚举类型一般用来定义一组相关的常量属性。在本章的学习中,需要注意以下几点: 本章学习的三种数据类型的名称都较长,可以使用typedef来得到简化的别名。 由于共用体中的所有成员共享一块空间,因此,对任意成员的赋值都会影响其他成员的值。 枚举类型一般用于会处理一组相关的属性,不要声明只含一个枚举成员的枚举类型。,1【考题】共用体的特征有哪些? 【解析】共用体可以含有多个成员,但同时只有一个成员能够被赋值,其共享一块空间,对任意成员的赋值都会影响到其他成员的值。,常见面试题,2【考题】设有以下说明和定义: typedef union long i; int k5; char c; DATE; struct data int cat; DATE cow; double dog; too; DATE max; 则语句 printf(“%dn”,(sizeof(struct data)+sizeof(max);的执行结果是多少?,常见面试题,1试使用union和struct设计一个可以同时处理char型数据、int型数据和double型数据的数据类型;并设计两个函数,分别实现对这个数据类型的输入和输出,其函数声明如下: int input_value(数据类型名 * v, void * data); /* 将任意类型的数据data,赋值给v */ void output_value(数据类型名v); /* 输出v的内容 */
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高级列车司机专业知识深度解析与面试模拟题详解
- 2025年初入旅游行业必-备知识旅游管理与服务模拟题集及答案详解
- 河南工程学院《基于深度学习的自然语言处理》2024-2025学年第一学期期末试卷
- 2025年电厂机械检修理论试题库简答题道(附答案)
- 2025年电子商务运营师初级面试模拟题集与答案解析
- 江苏航运职业技术学院《智能传感与检测技术》2024-2025学年第一学期期末试卷
- 西双版纳职业技术学院《用户体验设计》2024-2025学年第一学期期末试卷
- 2025年高校教师资格认定考试模拟题及备考策略
- 四川中医药高等专科学校《水处理高级氧化技术》2024-2025学年第一学期期末试卷
- 辽宁城市建设职业技术学院《数字影音多媒体制作》2024-2025学年第一学期期末试卷
- 2025年山西航空产业集团有限公司招聘考试笔试试题(含答案)
- 电梯安全培训课件内容
- 2025年事业单位招聘职业能力倾向测验考试题库附参考答案满分必刷
- 应聘副研究员汇报
- 2025年中考历史(河南卷)真题评析
- 手术室时间管理课件
- 2025版线上直播场推广服务合同模板
- 高一上学期数学学法指导课件2024.9.14
- GB/T 45845.1-2025智慧城市基础设施整合运营框架第1部分:全生命周期业务协同管理指南
- 呼吸科考试试题及答案
- 肿瘤内科胆囊癌护理查房
评论
0/150
提交评论