0
点赞
收藏
分享

微信扫一扫

联合体 —— union

#include <stdio.h>
int main()
{
union{
int i;
struct{
char first;
char second;
}half;
}number;

number.i=0x44434241;
printf("%x %x\n", number.half.first, number.half.second); // 41 42
number.half.first='a'; // ord('a') = 0x61
printf("%x\n", number.i); // 44434261 仅改变了低字节
}
#include <stdio.h>
union tmp
{
int a;
char c[4];
}u;
int main()
{
// printf("%d %d\n", sizeof(int), sizeof(char)); // 4 1
u.a = 0x04030201;
printf("%04x %04x %04x %04x %04x\n", u.a, u.c[0], u.c[1], u.c[2], u.c[3]); // 4030201 0001 0002 0003 0004
}
#include <stdio.h>
union tmp
{
int a;
char b;
}u;
int main()
{
// printf("%d %d\n", sizeof(int), sizeof(char)); // 4 1
u.a = 0x01000000;
printf("%x %x\n", u.a, u.b); // 1000000 0
u.a = 0x00000001;
printf("%x %x\n", u.a, u.b); // 1 1 小端模式
}

union 和 struct 的区别

  1. 结构和联合都是由多个不同的数据类型成员组成,但在任何同一时刻,联合中只存放了一个被选中的成员,而结构的所有成员都存在。
  2. 对于联合的不同成员赋值,将会对其它成员重写,原来成员的值就不存在了,而对于结构的不同成员赋值是互不影响的。

联合体 —— union_union


举报

相关推荐

0 条评论