【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. 联合体的特点

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

如何证明这一点呢?

证明一:

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

证明二:

相关推荐
Liaiyang663 小时前
空圈容错视角 · 多维切面篇:我们生活的世界,不止三维
人工智能·算法·系统架构·前沿技术·哲学·认知科学
ydjs678899-bot3 小时前
为什么大型monorepos变慢了Rush.js + Sparo对此做了什么
开发语言·javascript·ecmascript
const_qiu3 小时前
第 2.5 章 2.5.8:质量关 —— 安全审查、UI/UX 审查与踩坑复盘
java·人工智能·安全·ui·ux
闻缺陷则喜何志丹3 小时前
【环】P6709 [CCC 2020] Swapping Seats 环|普及+
算法·洛谷·环
坊钰3 小时前
【LangGraph框架入门级】12. 人机交互:interrupt 中断与 Command 恢复
开发语言·数据库·python·人机交互·ai编程·langgraph
chde2Wang3 小时前
hadoop部署错误-namenode address dfs.namenode.servicerpc-address not configured
java·大数据·hadoop
燕落南枝3 小时前
C 语言学习大总结:从入门到进阶的完整知识体系
服务器·c语言·学习
开开心心就好3 小时前
打印机卡住打不了?一键清理卡死打印队列
服务器·开发语言·算法·pdf·ocr·idea·visual studio code
不会C语言的男孩3 小时前
libxml2 源码编译与 XML 读取验证(x86 / ARM)
xml·c语言·嵌入式
格物致胜工业数智技术3 小时前
锂电纠偏测量那些坑,明治ETD-0612激光纠偏传感器怎么填?
人工智能·算法