- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.4 C51的联合 在C51语言中,除了前面介绍的数组、指针和结构外,还有其他一些聚合数据类型,本章将介绍的联合也是一种特殊形式的聚合数据结构,也叫共用体。 5.4.1 联合的声明和使用 联合是将不同的变量组织成一个整体的数据类型,以union作为关键字。联合中的变量在内存中共用同一内存单元,因此联合类型也称为共用体。只是在这个存储空间内,不同的时间保留不同的数据类型和长度的变量,每一时刻只有一个有效。 1.联合和联合变量的声明 2.联合变量成员的引用 3.联合变量指针 4.联合数组 5.联合和结构嵌套 5.4.2 结构和联合的区别 结构和联合在很多方面都很相似,比如数据结构形式、不同数据类型成员组成、声明方式、成员引用方式等。但结构和联合之间存在本质上的区别。结构和联合变量的区别主要在于联合变量的成员占用同一个内存空间,而结构变量中的成员分别独占自己的内存空间,互相不干扰。结构和联合的数据存储情况如图所示。 5.5 C51的枚举 枚举类型是由基本数据类型组合而成,即枚举类型属于聚合数据类型的一种。例如,一个星期内有七天,一年有十二个月,每学期有六门课程等。如果把这些量单独定义为整型、字符型或其他类型,则不便于对性质相同的数据进行统一操作,在程序中处理起来不方便。此时若采用枚举类型,则不但可以直观地表示其取值范围,而且也节省了存储空间。 5.5.1 枚举和枚举变量的声明 枚举类型主要用于将变量的取值限定在一个有限的范围内的情况。声明枚举类型时,列举出所有可能的取值,被声明为该枚举类型的变量,其取值不能超过该枚举定义的范围。 1.枚举的声明 在C51语言中,声明枚举类型的一般形式如下: enum 枚举名 { 标识符[=整型常量], 标识符[=整型常量], … }; 2.枚举变量的声明 枚举变量是以枚举类型为说明符的变量,其取值只能是其声明的枚举类型中的元素之一。 5.5.2 枚举变量的赋值和使用 在声明枚举类型时,如果没有进行初始化赋值,即省略“标识符[=整型常量]”不写,则系统会自动赋给一个表示序号的数值,枚举元素由从0开始顺序赋值为0、1、2…。如果枚举中的某元素被赋值,其后的枚举元素按依次加1的规则,确定其值。 例如:在声明枚举类型weekday中,没有进行初始化,系统便依次定义Monday值为0,Tuesday值为1,…,Sunday值为6。 5.6 C51的位域 位域型数据结构,也称为“位段”。位域也是聚合型数据的一种。在内存存储一些信息时,有时并不需要占用一个完整的字节空间,而只需占一个或几个二进制位即可。例如,存放一个开关量时,只有0或1两种状态,用1位二进制位即可满足。因此采用位域可以节省存储空间,加快程序执行速度。 5.6.1 位域和位域变量的声明 位域类型是把一个字节中的二进制位划分为若干个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名对位进行操作。这样就可以把几个不同的对象用一个字节的二进制位来表示。 1.位域的声明 2.位域变量的声明 5.6.2 位域变量的使用 位域变量的使用与结构变量、联合变量和枚举变量的使用十分相似。位域变量的位域名引用的一般形式如下: 位域变量名.位域名 在C51中,位域允许用各种格式输出。在C51语言中,也可以定义位域指针。其使用方式与前面介绍的结构指针、联合指针相似。当位域变量定义为指针时,要使用-符号来访问位域,其一般表示形式如下: 位域指针名-位域名 5.7 C51的自定义类型 C51语言中提供了多种多样的数据类型,包括基本数据类型和聚合数据类型。除此以外,为了方便用户程序设计的需要,C51还允许用户自定义类型名,以满足特殊需要。 5.7.1 自定义类型的声明 自定义类型是指由用户自己定义类型说明符,即由用户为数据类型取其他类型名。自定义类型声明的一般形式如下: typedef 原类型名 新类型名; 其中,“typedef”为类型定义关键字,原类型名为已有的类型名称,新类型名一般用大写表示,以便于区别原类型名。有时对于比较长的类型说明,可以使用自定义类型来减少类型说明的长度。例如,无符号字符型变量的类型说明符为unsigned char,为了书写简单并增加程序的可读性,可以自定义整型说明符: typedef unsigned char uchar; 5.7.2 自定义类型的使用 自定义类型说明在程序中常用于定义数组、指针、结构等较复杂的数据类型,这将为程序设计将带来很大的方便。使用自定义类型说明的另一个功能是便于程序的移植。 typedef自定义数组的示例如下: typedef char CNAME[10]; 这里用CNAME来表示是字符数组类型,数组长度为10。然后
文档评论(0)