联合(共用体)**
1、联合类型的定义
联合也是一种特殊的自定义类型,这种类型定义的变量也包括一系列的成员,特别是这些成员共用同一块空间(所以联合也叫共用体)
例如:
//联合体声明
union U{
char c;
int i;
};
//联合变量的定义
union U u;
上面代码中的u联合体变量的大小为4。
2、联合的特点
联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联合至少得有能力保存那个最大的成员)
面试题:判断当前计算机的大小端存储
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <Windows.h>
//判断是大端存储还是小段存储
union S{
char c;
int i;
};
int Judge(){
union S s;
s.i = 1;
if (1 == *(&(s.c))){//取出存放在第一个字节的数
return 1;
}
else {
return 0;
}
}
int main(){
int ret = Judge();
if (ret == 1){
printf("小端");
}
else{
printf("大端");
}
system("pause");
return 0;
}
3、联合大小的计算
- 联合大小至少是最大成员的大小
- 当最大成员的大小不是最大对齐数整数倍时,就要对齐到最大对齐数的整数倍。