当前位置: 首页 > article >正文

自定义类型-联合体

概念

联合体是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型

联合体的所有成员共享同一块内存空间,大小由最大的成员决定

用于在同一块内存单元内存放不同类型的变量

语法结构

结构与结构体类似,

union 共用体名
{成员列表
}变量列表;union Data {int i;      // 整型成员float f;    // 浮点型成员char str[20]; // 字符数组成员
};

特点

同一个内存段可以用来存放几种不同类型的成员,但只能同时存放其中一个成员的数据,不能同时存放几个成员的数据,因为联合体的所以成员是共用同一块空间的,访问不同的成员时,会将前一个成员的内存覆盖

联合体总体大小的规则

联合体的大小至少是最大成员的大小

当最大成员的大小不是最大对齐数的整数倍时,需要对齐到最大对齐数的整数倍

union Data {int i;          为4字节float f;        为4字节char str[20];   为1字节
};
该联合体的最大字节为4字节,4为最大对齐数的倍数
因此该结构体的总体大小为4字节

联合体与结构体的区别

维度结构体(struct联合体(union
数据共存性✅ 所有成员数据同时有效❌ 同一时间仅一个成员有效
内存效率占用内存较多(所有成员独立存储)占用内存较少(共享内存)
数据安全性高(成员修改互不影响)低(修改成员会覆盖其他数据)
设计哲学数据聚合(“与”关系:所有属性需同时存在)数据互斥(“或”关系:同一时间只需一个属性)
http://www.lryc.cn/news/2383650.html

相关文章:

  • Qt项目开发中所遇
  • ubuntu sh安装包的安装方式
  • Redis语法大全
  • OpenAI宣布:核心API支持MCP,助力智能体开发
  • 我的爬虫夜未眠:一场与IP限流的攻防战
  • git:The following paths are ignored by one of your
  • 算法--js--组合总和
  • 微服务中的 AKF 拆分原则:构建可扩展系统的核心方法论
  • vue element-plus 集成多语言
  • 如何测试JWT的安全性:全面防御JSON Web Token的安全漏洞
  • 车载网关策略 --- 车载网关重置前的请求转发机制
  • EtpBot:安卓自动化脚本开发神器
  • 连锁企业管理系统对门店运营的促进作用
  • 现代生活健康养生新策略
  • 车载以太网网络测试-27【SOME/IP-SD简述】
  • 云南安全员考试报名需要具备哪些条件?
  • Android Binder线程池饥饿与TransactionException:从零到企业级解决方案(含实战代码+调试技巧)
  • FFmpeg 超级详细安装与配置教程(Windows 系统)
  • 【Redis8】最新安装版与手动运行版
  • PyQt 探索QMainWindow:打造专业的PyQt5主窗
  • Spring Boot 集成 Elasticsearch【实战】
  • 06算法学习_58. 区间和
  • 如何在Java中进行PDF合并
  • Python爬虫之路(14)--playwright浏览器自动化
  • Python开启智能之眼:OpenCV+深度学习实战
  • 华为模拟器练习简单的拓扑图(3台路由器和2台pc)
  • uniapp生成的app,关于跟其他设备通信的支持和限制
  • 如何提高独立服务器的安全性?
  • 机器学习第十八讲:混淆矩阵 → 诊断模型在医疗检查中的误诊情况
  • Proxmox 主机与虚拟机全部断网问题排查与解决记录