联合体/共同体 union

本文详细介绍了共同体(union)和结构体(struct)的概念及使用方法,并通过具体示例展示了共同体成员如何共享同一段内存区域,以及当一个成员被赋值时其他成员值的变化情况。

定义一个共同体跟定义struct的方式差不多

首先定义一个结构体:

typedef struct

{

  unsigned char floor;

  unsigned char room;

  unsigned short region;

}position;

 

再定义一个共同体

typedef union

{

 position lightpos;

 unsigned char posbyte[4];

}p;

 

如果如下赋值:

p.lightpos.floor = 0x10;

p.lightpos.room = 0x01;

p.lightpos.region = 0x0501;

 

则:

p.posbyte[0] = 0x10;

p.posbyte[1] = 0x01;

p.posbyte[2] = 0x01;

p.posbyte[3] = 0x05;

 

也就是说共同体所有的成员共享内存,当其中一个成员被赋值,另一个成员相应的值也跟着改变。

转载于:https://www.cnblogs.com/qmlm8844/archive/2012/11/15/2772288.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值