C语言中,共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。
C语言中,union语法上与struct相似,union只分配最大成员的空间,所有成员共享这个空间。
#include<stdio.h>
struct A
{
int a;
int b;
int c;
};
union B
{
int a;
int b;
int c;
};
int main()
{
printf("%d\n", sizeof(struct A));
printf("%d\n", sizeof(union B));
return 0;
}
union大小端影响
union的使用受系统大小端的影响
union C
{
int i;
char c;
};
union C c;
c.i = 1;
printf("%d\n", c.c); //这里的输出结果跟系统是大端/小端有关,这里都是取低地址的第一个字节打印。
示例:编程判断系统的大小端
#include <stdio.h>
int system_mode()
{
union SM
{
int i;
char c;
};
union SM sm;
sm.i = 1;
return sm.c;
}
int main()
{
printf("System Mode: %d\n", system_mode());
return 0;
}
输出结果:
上面输出结果表示系统是小端模式。