C语言的语法规则.docVIP

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

知识点16 [共用体型数据] 综述: 通常情况下,一旦一个变量被创建,那么它就占据了一块内存区域,只能用于存放某类型的数据,例如,int型变量只能存放int型数据,结构体变量只能存放结构体类型的数据等等。但是,在解决实际问题的时候,会碰到一些特别的数据存放方式。 例1:希望创建一个变量u1(该变量在计算机内存中占据一块空间),用该变量来存放某同学的年龄或性别,年龄(整型)和性别(字符型)是不同类型的数据,年龄和性别不同时使用! 当需要使用年龄时,可以用它来存放年龄,需要使用性别时,可以用它来存放性别,该变量的内存空间大小=整型和字符型所需空间的较大值,也就是:希望该变量的内存空间允许存放不同类型的数据,用同一块内存地方来存放某同学的年龄或性别,如下所示: u1 100,101号字节 ‘M’或19 显然,在这种情况下,变量u1的类型我们就无法表达了,u1不可能属于整型、实型、字符型等基本类型,因为这些类型的变量只能存放同一类型的数据,不能实现存放不同类型的int型和char型数据;u1也不属于数组,因为数组变量虽然可以存放多个元素,但元素类型也要求是一样的,如果将u1需要存放的年龄和性别看作两个元素,这两个元素类型不同; u1是否属于结构体变量呢?u1需要存放的年龄和性别看作两个元素,这两个元素类型不同,正好可以看作是结构体变量的两个成员。但是,如果我们将u1定义成为一个结构体变量: struct { char sex; int age; }u1; 那么,u1占据的内存空间=sex占据的1字节+age占据的2字节=3字节。显然,这不符合我们对u1的希望,我们只希望: u1占据的内存空间=max(sex占据的1字节+age占据的2字节)=2字节 而且,如果u1作为结构体变量,其两个成员u1.sex 和 u1.age占据的是不同的内存空间,是可以同时使用的。而我们希望u1的两个成员u1.sex 和 u1.age占据的是相同的内存空间,两个成员相互覆盖使用。 可见,对于象u1这样的变量,需要约定新的数据类型。C语法规定了共用体类型来集中象u1这样的变量。 例2:某在校人员的人事信息整体: 姓名 类别 班级或职称 年龄 “Liming” student 1 19 “Lili” Teacher “Professor” 56 字符串型 枚举型 班级:int型 职称:10个字符组成的字符数组型 Int型 在上表数据中,姓名数据我们可以用字符串变量来存放,类别数据可以用枚举型变量来存放,年龄数据可以用int型变量来存放。分析班级或职称这个数据,如果我们创建一个变量u2来存放它,那么u2具备特征:u2可以存放int型的班级数据和字符数组型的职称数据,u2占据内存空间=max(班级占据的2字节+职称占据的10字节)=2字节,用这2个字节既存放int型数据,又存放字符数组型数据,即班级和职称这两个成员在内存中占据同一起始地址的内存单元,但班级和职称相互覆盖使用,在某一时刻,我们只会用到u2中的一个成员变量)。 对于象u1、u2这样的变量,C语法将它们归为共用体类型。有了共用体类型变量,我们就使用它来存放不同类型的数据,而且这些数据共享该变量的内存空间。下面,我们就详细学习与共用体类型相关的语法规则(包括如何声明共用体类型,如何定义和使用共用体类型变量)。 知识点161 [共用体类型声明] 同为共用体类型的变量,但其内部共享同一段内存的成员变量可能差别很大,例如成员个数不同,成员类型不同,可见,对于共用体类型变量,其最基本的要素为: 共享同一段内存的成员变量个数和成员变量类型 例如:共用体变量u1包含共享同一段内存的2个成员变量组成,int型成员变量age和char型成员变量sex。 地址 u1 100号字节 成员1:int age; 成员2:char sex; 19 2个字节 例如:共用体变量u2包含共享同一段内存的2个成员变量组成,int型成员变量class和字符数组型成员变量zhichen。 地址 u2 100号字节 成员1:int class; 成员2:char zhichen; “Professor” 10个字节 U1和u2就是两个不同的共用体类型变量。因此,C语法没有办法对共用体类型数据规定出诸如int、float的同一的类型符号,因为共用体类型数据的内部结构无法穷举,具体问题不同,成员个数和成员类型不同,就是不同的共用体类型数据,于是,C语法给程序设计者提供了一种自己声明所需要的共用体类型的方法,按照这个方法,可以声明实际问题所需要的任何共用体类型,指明该共用体类型的成员类型

文档评论(0)

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

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

1亿VIP精品文档

相关文档