【C语言】联合体(union)

文章目录

  • 1.联合体的含义
  • [2. 联合体的声明](#2. 联合体的声明)
  • [3. 联合体大小的计算](#3. 联合体大小的计算)
  • [4. 联合体的特点](#4. 联合体的特点)

1.联合体的含义

联合体也叫做共用体,是指联合体的所有成员共用同一块内存空间。这也就说明了,联合体的大小至少是其成员所占空间的最大值。

2. 联合体的声明

c 复制代码
#include<stdio.h>
//声明了一个联合体
union Un 
{
	char c;
	int i;
};

int main()
{
	//联合变量的定义
	union Un un = {0};
	//计算一个联合变量的大小
	printf("%zd\n",sizeof(un));
	return 0;
}

为什么会是4呢?相信有不少的读者会产生疑惑。

3. 联合体大小的计算

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

4. 联合体的特点

联合体的成员时共用同一块内存空间的,这样一个联合体变量的大小,至少得是最大成员的大小(因为联合体至少得有能力保存最大的那个成员)。

如何证明这一点呢?

证明一:

可以看到不管是联合变量还是里面的成员,它们都是从同一个地址空间出开始存放数据的。

证明二:

相关推荐
可编程芯片开发3 分钟前
UPFC统一潮流控制器的simulink建模与仿真
算法
Ivanqhz18 分钟前
Rust &‘static str浅析
java·前端·javascript·rust
小小仙子39 分钟前
矢量网络分析仪如何测试S参数的?
人工智能·算法·机器学习
Wang's Blog1 小时前
Go-Zero项目开发24: 基于Bitmap实现群聊消息已读未读
开发语言·后端·golang
中微极客2 小时前
降维算法75倍加速:从PCA到稀疏字典学习的工程实践
人工智能·学习·算法
storyseek3 小时前
前缀和实现Kogge-Stone算法
数据结构·算法
ziguo11223 小时前
深入浅出 C/C++ 数据类型:从入门到踩坑
linux·c语言·c++·windows·visual studio
元Y亨H3 小时前
开发者必须掌握的十大核心算法
算法
weixin_419658313 小时前
Docker 搭建 Jenkins 服务
java·docker·jenkins
元Y亨H3 小时前
深度解构:数据结构与算法的理论基石与工程演进
数据结构·算法