网站大量收购独家精品文档,联系QQ:2885784924

九、联合union十、数据的引用类型转换十一、位域或位字段.pptVIP

九、联合union十、数据的引用类型转换十一、位域或位字段.ppt

  1. 1、本文档共42页,可阅读全部内容。
  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文档。上传文档
查看更多
九、联合union 十、数据的引用类型转换 十一、位域或位字段 九、联合union 1. 联合的特性和定义 由关键字struct声明的数据描述称为结构类型而union 或class声明的数据描述称为联合类型或类类型,分别简称为 结构和联合或类。 结构、联合、类是集合数据类型。 int、float等是系统预先取好的可以直接使用的类名, 关键字struct和union 或class后紧跟的标识符则是用户引入 的类名,需要事先加以声明。 在程序设计中常出现非此即彼的数据,这些数据的类型 可以不同,需要将其放置在同一片内存。 关键字union 建立的数据类型为用户引入的联合类型, 简称联合。联合一方面是节省内存空间,另一方面是特殊的 编程考虑。 联合的特性和定义: 联合类型定义的变量称为联合变量。指向联合变量的指 针简称为联合指针。联合类型的声明和联合变量的定义采用 与结构类似的语法,不同的是联合使用关键字union。 将前面关于结构声明复制过来略加变动并用union替代 struct得到: union UnionName 联合 联合名 { type member; { 数据类型 成员名 ; type2 member2; 数据类型2 成员名2; typen membern; 数据类型n 成员名n; }; }; 关键字union用于声明同一片内存可以存放不同类型的 数据,但在一个时刻只有某一类型的数据处于有效的状态。 联合类型声明中的数据成员具有如下的性质: a. 不同的成员占有起始地址相同的内存区域,这些成 员以并排的方式重合在一起。 b. 该内存区域的长度确定为所有成员中占有内存空间 最长的成员所对应的长度。 c. 在一个具体的时刻仅包含一种数据成员有效虽然成 员可以是集合型的数据。 d. 初始化联合变量时默认对第一个成员进行赋值亦仅 对一个成员赋值,初始值的类型属性应与第一个成员的类型 属性一致,否则编译器至少给出警告。 e. C++中联合不参入继承机制即联合类既不作基类也不 作派生类,不能有虚拟函数。 [例] 联合的内存和结构的内存大小比较 #includestdio.h typedef struct s_a { double d; char c[9]; } A; typedef struct s_b { double d; long k[2];} B; typedef union u_t { A a; B b; } U; typedef struct s_t { A a; B b; } S; void main (void) { printf (sizeof(A)= %d,, sizeof (A)); printf (sizeof(B)= %d,,sizeof (B)); printf (sizeof(U)= %d,, sizeof (U)); printf (sizeof(S)= %d, sizeof (S)); } //输出:sizeof (A)= 24,sizeof (B)= 16,16, sizeof (U)= 24,24,sizeof (S)= 40 联合一经声明就可以定义联合变量、联合数组和联合指 针。 箭头运算符“-”与圆点运算符“.”可以用来访问联合中 的成员,箭头运算符-的左侧是联合指针,圆点操作符.“ 的左侧是联合变量,右侧是联合中的成员。 这和结构变量的使用规则一致。 不同的是结构变量拥有结构中各独立的成员所占内存之 和; 联合变量则仅是最大成员所拥有的内存,这一片内存可 由若干类型属性不同的成员适当索引,它们齐头地占有同一 块内存。 联合遵循先声明后定义再使用的次序。如下所示: typedef union u_t {int k[4]; long member; float y; }U; U obj, *pobj; obj.

文档评论(0)

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

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

1亿VIP精品文档

相关文档