灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2313回复:0

联合类型的定义

楼主#
更多 发布于:2012-09-10 18:58

联合数据类型是一种特殊的数据类型。它可以实现:以一种数据类型存储数据,以另一种数据类型来读取数据。程序员可以根据不同的需要,以不同的数据类型来读取联合类型中的数据。也就是说,在一些情况下,以一种数据类型来读取联合类型中的数据,而在另一些情况下,又以另一种数据类型来读取其数据。

1、联合类型的说明

联合数据类型其说明格式如下:

[联合类型名] UNION [Alignment] [,NONUNIQUE]

数据定义语句序列

[联合类型名] ENDS

联合类型中的各字段相互覆盖,即同样的存储单元被多个不同的字段所对应,并且其每个字段的偏移量都为0。

联合类型所占的字节数是其所有字段所占字节数的最大值。

、对齐方式(Alignment):可用1、2或4来指定结构字节的边界,其缺省值为1。它还用可伪指令ALIGN或EVEN来重新定界,也可用命令行选项/Zp来定界;

、NONUNIQUE:要求联合类型中的字段必须用全名才能访问,联合类型字段的方法见下面的“联合类型字段的”。

例如:

DATATYPEUNION

BB DB ? ;定义一个字节类型的字段

WW DW ? ;定义一个字类型的字段

DD DD ? ;定义一个双字类型的字段

DATATYPEENDS

联合类型DATATYPE的字段分布如图4.8所示。

在联合类型的最外层定义中,在伪指令UNION和ENDS的前面一定要书写该联合类型名,而在其嵌套定义的内层,伪指令UNION和ENDS之前一定不能写联合类型名。

图4.8 DATATYPE的字段分布示意图

例如:

UNION1UNION

BBDB ?

WWDW ?

UNION;联合类型的嵌套定义形式

 W1DW ?

 B1DB ?

ENDS

UNION1ENDS

喜欢0 评分0
游客

返回顶部