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

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

如何证明这一点呢?

证明一:

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

证明二:

相关推荐
工具派12 小时前
视频场景检测是怎么找到切镜头位置的?三种思路与实测
算法·计算机视觉·视频
泡海椒12 小时前
Java 后端最优 PDF 导出方案:jquick-pdf 项目引入与快速测试
java·开发语言·pdf
钓鱼的肝12 小时前
csp-j-s总结(1)
c++·笔记·算法·青少年编程
流云枫12 小时前
001-Transformer架构与Self-Attention机制深度解析
算法
Evand J12 小时前
【MATLAB例程】二维Astar路径规划与AOA-TDOA定位仿真。完整代码,附下载链接。包运行成功,带中文注释
开发语言·matlab·路径规划·代码·定位·融合定位
李永奉12 小时前
中科蓝讯SDK开发-耳机项目功耗问题排查教程
c语言·开发语言·嵌入式硬件·物联网·智能手机
阿飞76612 小时前
订单超时自动关单:RabbitMQ 延迟队列 + 定时任务"双保险"实践
java
二炮手亮子12 小时前
使用云服务+hermes+mino模型 我用微信操控服务器自己编程并部署实操
java·语言模型·ai编程
她的男孩12 小时前
安全同事找我要"上周所有登录失败记录",我查完数据库:一条都没有
java·后端·架构
m0_5873830012 小时前
本地同城无人机作业接单系统源码:架构拆解与抢单调度实现
java·小程序·架构·需求分析