概述
一个结构体,但是成员共用同一块空间。
union A {
int b;
char c;
};
内存结构:
同一段内存,具有了多种访问方法。
占据的字节数
就是最大成员的字节数。
#include<stdio.h>
union A {
int b;
char c;
};
int main() {
union A a;
printf("%p:%lld\n", &a, sizeof a);
printf("%p:%lld\n", &a.b, sizeof a.b);
printf("%p:%lld\n", &a.c, sizeof a.c);
return 0;
}
效果:
总共四字节。
int的成员四字节。
char的成员一字节。
整体以及成员的地址是一样的。
案例:判断大小端
一个char,一个int,存放数值1,
如果值相同,那就是大端。因为1放在了开头。
#include<stdio.h>
int main() {
printf("%d", isBig());
return 0;
}
int isBig() {
union {
char a1;
int a2;
}x;
x.a2 = 1;
return x.a1;
}
效果: