联合(共用体)

联合(共用体)**
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、联合大小的计算

  • 联合大小至少是最大成员的大小
  • 当最大成员的大小不是最大对齐数整数倍时,就要对齐到最大对齐数的整数倍。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值