第19章 共用体、枚举和位域.pptVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第19章 共用体、枚举和位域

位域 在一些任务中,需要处理的信息都只需要占用一个或几个二进制位,这种情况下,如果使用一般的数据结构进行处理,会占用额外的空间,并增加多余的处理时间。这时,可以使用C语言中的另一种数据结构“位域”(或称为“位段”)来处理该数据。 位域属于结构体,它允许在结构体内以位为单位将其空间划分为多个区域,并将其分配给结构体的各个成员。在程序中可以通过操作位域的各个成员来操作其中的区域。 位域的概念 利用位域可以使用较少的字节数来存储信息,其形式如下: struct 结构体名 { /* 定义位域成员 */ unsigned 位域成员1 : 常量1; unsigned 位域成员2 : 常量2; int 位域成员3 : 常量3; int 位域成员4 : 常量4; … /* 定义其他普通成员 */ 数据类型名 成员1; 数据类型名 成员2; … }; 1.【考题】共用体的特征有哪些? 【解析】共用体可以含有多个成员,但同时只有一个成员能够被赋值,其共享一块空间,对任意成员的赋值都会影响到其他成员的值。 1-* 融智技术学院 第19章 共用体、枚举和位域 杨章伟 e-mail:yang505412@163.com 课程内容安排 共用体 枚举 位域 小结 习题 共用体 继第18章介绍了结构体之后,本章将介绍另外三种高级数据类型:共用体、枚举和位域。这三种数据类型与结构体一样,都是多个数据单元结合而成的复杂数据单元,因此,它们可以用来描述更为复杂的数据形式。这三种数据类型的适用范围各有不同 。 共用体(union)是C语言中另一种高级数据结构,它可以使几个不同成员共享同一块内存。合理地使用共用体可以节省内存空间,还可以简化多种复杂数据的处理。 声明共用体类型 在程序中,有时为了节约内存空间,可以使用共用体来使多个变量共享一块内存。共用体与结构体类似,可以含有多个成员,其声明形式如下: 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)、共用体(union)和枚举(enum)。其中,结构体的应用十分广泛,需要重点掌握它的使用方法,包括结构体变量的使用、结构体数组的使用和结构体指针的使用;而枚举类型一般用来定义一组相关的常量属性。在本章的学习中,需要注意以下几点: 本章学习的三种数据类型的名称都较长,可以使用typedef来得到简化的别名。 由于共用体中的所有成员共享一块空间,因此,对任意成员的赋值都会影响其他成员的值。 枚举类型一般用于会处理一组相关的属性,不要声明只含一个枚举成员的枚举类型。 常见面试题 2.【考题】设有以下说明和定义:   typedef union { long i; int k[5]; char c; } DATE; struct data { int cat; DATE cow; double dog; } too; DATE max; 则语句 printf(“%d\n”,(sizeof(struct data)+sizeof(max)));的执行结果是多少? 常见面试题 1.试使用union和struct设计一个可以同时处理char型数据

您可能关注的文档

文档评论(0)

shaoyifen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档