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

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

如何证明这一点呢?

证明一:

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

证明二:

相关推荐
Tizzy JJ几秒前
Python + pytest 接口自动化测试框架实战:从零搭建企业级项目骨架
开发语言·python·pytest
Meta391 分钟前
Java八股文之Spring Boot中解决Redis和MySQL的数据一致性问题
java·spring boot·redis
海兰1 分钟前
【 Python 量化交易】第8章:量化工具箱
开发语言·python
牛油果子哥q3 分钟前
C++大型项目工程精讲:CMake完整实战、静态库&动态库、模块化拆分、单元测试、gdb调试、性能工具、工程踩坑全解
开发语言·c++·单元测试
Dream Cosmos5 分钟前
C++ 多态上篇:从 virtual 到抽象类,彻底理解多态的使用
开发语言·c++
TheBestRucy6 分钟前
Python九阳神功之柒:数据分析三剑客·执剑问道
开发语言·python·数据分析
人工智能培训8 分钟前
人工智能性别与地域偏见的成因及消解路径
大数据·人工智能·算法·生活
鹿角片ljp9 分钟前
LeetCode 56:合并区间复盘|从排序思维到 List<int[]> 的简洁写法
算法·leetcode·list
qq_3391911425 分钟前
go cpu占比高排查,cpu100%排查,go pprof cpu命令
开发语言·后端·golang
M78佐菲26 分钟前
Linux学习笔记:网络通信
linux·笔记·学习·算法