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

自定义类型-联合体

概念

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

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

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

语法结构

结构与结构体类似,

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.xdnf.cn/news/8321.html

相关文章:

  • 十进制转二进制
  • git@gitee.com: Permission denied (publickey). fatal: 无法读取远程仓库
  • N-gram语言模型原理与实战教程
  • sqli-labs第二十一/二十二关——POST-base64
  • STL 转 STP 深度技术指南:从 3D 打印模型到工程标准的跨领域转换全解析(附迪威模型在线方案)
  • 亚马逊选品可以从以下几个方面着手
  • 浙江大学python程序设计(陈春晖、翁恺、季江民)习题答案-第十章
  • 各种标准的简称和字母标识
  • 01-jenkins学习之旅-window-下载-安装-安装后设置向导
  • Android 串口-usb-serial-for-android
  • Spring Boot——自动配置
  • 如何给文件夹添加编号?批量给文件夹添加数字、字母、日期编号
  • 前端判空:与后端 “千层套路” 的斗智斗勇
  • highCharts生成3D饼图
  • 若依Ruoyi富文本编辑器Quill粘贴图片改成文件上传(不使用base64)
  • 【C/C++】深入解析Linux下C/C++内存管理全攻略(纲要)
  • 从0到1玩转TypeScript:开启类型世界的奇妙冒险
  • 基于 AMDXCVU13P FPGA 的 4 路 100G 光纤 PCIe 低时延高性能计算加速卡
  • MCP Server StreamableHTTP 开发学习文档
  • RT-Thread源码阅读(2)——任务启动与调度
  • ArkTs中的尾随闭包
  • 如何重新设置网络ip地址?全面解析多种方法
  • 第八天 搭建车辆状态监控平台(Docker+Kubernetes) OTA升级服务开发(差分升级、回滚机制)
  • eNSP防火墙实现GRE over IPSec
  • 文件操作和IO-3 文件内容的读写
  • 【Java高阶面经:数据库篇】16、分库分表主键:如何设计一个高性能唯一ID
  • transformer网络
  • 云曦25年春季期中考核复现
  • 【会议推荐|权威出版】2025年电力工程与电气技术国际会议(PEET 2025)
  • Python 训练 day31