前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >联合(共用体)的讲解

联合(共用体)的讲解

作者头像
薄荷冰
发布2024-01-22 21:45:45
950
发布2024-01-22 21:45:45
举报
文章被收录于专栏:后端学习之旅后端学习之旅

1.联合类型的定义

联合也是一种特殊的自定义类型

这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体)。

具体如下:

代码语言:javascript
复制
//联合体的申明
union Un
{
	char c;
	int i;
};
//联合变量的定义
union Un un;
//计算连个变量的大小
int main()
{
	printf("%d\n", sizeof(un));
}

输出结果:4

2.联合体的特点

联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联

合至少得有能力保存最大的那个成员)。但每种变量所占空间大小还是遵循自己本生的类型。

代码语言:javascript
复制
union Un
{
	char c;
	int i;
};
union Un un;
int main()
{
	printf("%d\n", sizeof(un.c));
	printf("%d\n", sizeof(un.i));
}

结果:1

4

所谓公用同一块空间是指在开辟内存空间时不同类型的变量的起始地址相同。

那么我们就可以用他解决问题,判断当前计算机的大小端存储。(什么是大小端存储

代码如下:

代码语言:javascript
复制
union Un
{
	char c;
	int i;
};
union Un un;
int main()
{
	un.c = 0x01;
	if (un.i == 0x01)
		printf("小端");
	if (un.i == 0x01000000)
		printf("大端");
	return 0;
}

结果:小端;

3. 联合大小的计算

联合的大小至少是最大成员的大小。 当最大成员大小不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍

代码语言:javascript
复制
union Un1
{
	char c[5];
	int i;
};
union Un2
{
	short c[7];
	int i;
};
//下面输出的结果是什么?
int main()
{
	printf("%d\n", sizeof(union Un1));
	printf("%d\n", sizeof(union Un2));
}

结果:8 16

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.联合类型的定义
  • 2.联合体的特点
  • 3. 联合大小的计算
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档