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

自定义类型-联合体

概念

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

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

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

语法结构

结构与结构体类似,

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
数据共存性✅ 所有成员数据同时有效❌ 同一时间仅一个成员有效
内存效率占用内存较多(所有成员独立存储)占用内存较少(共享内存)
数据安全性高(成员修改互不影响)低(修改成员会覆盖其他数据)
设计哲学数据聚合(“与”关系:所有属性需同时存在)数据互斥(“或”关系:同一时间只需一个属性)

相关文章:

  • web第六次课后作业--使用ApiFox实现请求响应操作
  • 智慧在线判题OJ系统项目总体,包含功能开发思路,内部中间件,已经部分知识点
  • Python结合ollama和stramlit开发聊天机器人
  • 黑马点评前端Nginx启动失败问题解决记录
  • 响应式架构下的调试挑战:WebDebugX 如何帮助前端稳住场面?
  • python实现web请求
  • 解决weman框架redis报错:Class “llluminatelRedis\RedisManager“ not found
  • web实验(2)
  • 【Dify平台】使用Dify API 实现网页内嵌式AI助手
  • Redis实战篇Day01(短信登录篇)
  • 谷歌medgemma-27b-text-it医疗大模型论文速读:多语言大型语言模型医学问答基准测试MedExpQA
  • PyTorch可视化工具——使用Visdom进行深度学习可视化
  • java 基础知识巩固
  • 论文阅读笔记——PixArt-α,PixArt-δ
  • [Harmony]网络请求
  • 【COMPUTEX 2025观察】NVIDIA开放NVLink:一场重构AI算力版图的“阳谋“
  • 应用案例 | 集成Docker,解锁 HMI/网关的定制化应用
  • 数据库基础面试题(回答思路和面试建议)
  • 力扣第450场周赛
  • upload-labs靶场通关详解:第14关
  • 怎样做网站店铺/怎么优化网络
  • 凡科网站怎么做链接/免费男女打扑克的软件
  • 网站设计 推广/seo优化是利用规则提高排名
  • 南宁网站建设推广服务/上海优化网站方法
  • 怎么做asp动态网站/百度竞价优化
  • 哪家公司做网站不错/个人介绍网页制作