首页 > 代码库 > 结构与联合
结构与联合
- 结构和联合都是由多个不同的数据类型成员组成,但在任何同一时刻,联合中只存放了一个被选中的成员(所有成员共用一块地址空间),而结构的所有成员都存在(不同成员的存放地址不同)。
- 对于联合的不同成员赋值,将会对其它成员重写,原来成员的值就不存在了,而对于结构的不同成员赋值是互不影响的。
#include <stdio.h>union{ int i; char x[2];}a;int main(){ a.x[0] = 10; a.x[1] = 1; printf("%d", a.i);}
结果是266(低位低地址,高位高地址,内存占用情况0x010A)
int main(){ union{ int i; struct{ char first; char second; }half; }number; number.i = 0x4241; printf("%c%c\n", number.half.first, number.half.second); number.half.first = ‘a‘; number.half.second = ‘b‘; printf("%x\n", number.i); return 0;}
AB(0x41,对应‘A’,是低位;0x42,对应‘B’,是高位)
6261(number.i和number.half共用一块地址空间)
结构与联合
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。