自定义类型——联合和枚举(简明分析) 目录一联合体类型1联合体的声明2,联合体的内存分配3相同成员的结构体和联合体的对比4联合体大小的计算5联合体的运用1利用联合体来节省空间2利用联合体判断大小端字节序二枚举类型1枚举类型的声明2枚举类型的优点3枚举类型的使用一联合体类型1联合体的声明与结构体类型联合体也是由一个和多个成员所构成这些成员可以是不同类型的。不同的是内存只为最大的类型开辟空间其他成员和最大成员共用一块空间所以联合体也叫共用体。2,联合体的内存分配联合体中的成员共用一块内存所以联合体的大小至少是所占内存最大的成员的大小。下面通过两个实例深度解析联合体的内存分配情况1.上述代码的输出结果为4 //表示联合体的大小与最大成员i的大小相同00DEFBA000DEFBA000DEFBA0 //表示联合体开创的空间的首地址和元素 i以及元素a的地址相同图中橙色部分表示i和a共用的部分。2储存时任然按照小端序列存储首元素地址最小。当不改变是c的地址处存入的就是44此时改变c,i也会跟着改变。相反改变ic也会改变。3相同成员的结构体和联合体的对比存储情况对比由此可知相较于使用结构体来说使用联合体更节省内存。但是相较于结构体来说由于c和i之间不相互独立当想要改变其一时就会影响另一个。4联合体大小的计算联合体的大小遵循两个规则1联合体的大小至少是最大成员的大小2联合体的大小是最大对齐数的整数倍处。金色为a和i的共用区域蓝色为a中最后一个元素的区域由于最大对齐数是4所以联合体的大小至少是4的倍数所以空出3个字节最后取8Un2的情况类似b占14个字节最大对齐数为4所以取16为最终大小。5联合体的运用1利用联合体来节省空间假设有三种物品书、杯子、衣服这三种物品有三种公共属性库存量价格商品类型除此之外还有自身属性其中图书有书名、作者、页数杯子有设计衣服设计、可选颜色、可选尺寸此时利用结构体存储这些信息如果利用联合体存储这些信息时通过联合体存储自身属性可以大大节省空间同时因为只会在三个物品中选择一个所以不会产生相互影响的情况。2利用联合体判断大小端字节序二枚举类型1枚举类型的声明枚举类型就是把可能的取值一一列举例如三原色red、green、blue性别male、female、secretenum color、enum sex都是枚举类型{}中的内容是枚举类型的可能取值也叫枚举常量。上面的取值都有默认值默认从0开始依次递增加1结果0 1 2也可以直接对里面的内容赋初值例如打印结果0 7 82枚举类型的优点我们可以使用#define 来定义常量相比之下使用枚举有什么优点枚举的优点1增加代码的可读性和维护性2和#define定义的标识符相比枚举有类型检查更加严谨3便于调试而#define预处理阶段会删除#define定义的符号4方便使用一次可以定义多个变量5枚举常量是遵循作用域规定的枚举声明在函数内只能在函数内使用3枚举类型的使用也可以使用整数给枚举变量赋值但在C中无法实现。枚举例题1枚举类型的枚举值只可能是整型常量表达式2枚举类型本质上是一种整数类型在内存中存储为整数3枚举类型可以作为函数的参数进行传递也可以作为函数的返回值

相关新闻

最新新闻

Claude API中转服务:解决国内开发者网络访问与支付难题

Claude API中转服务:解决国内开发者网络访问与支付难题

1. 先搞清楚为什么需要中转API,以及它到底解决什么实际问题如果你在国内调用Claude官方API时经常遇到"unable to connect to anthropic services"、"failed to connect to api.anthropic.com"这类错误,那这篇文章就是为你准备的。这…

2026/7/26 23:58:26
自然语言转SQL技术(NL2SQL)在电商数据中台的应用实践

自然语言转SQL技术(NL2SQL)在电商数据中台的应用实践

1. 项目背景与核心价值去年我在某电商平台负责数据中台建设时,经常收到业务部门的同类需求:"帮我查下上个月华东区女性用户的复购率"、"对比这两个季度的客单价变化趋势"。每天要处理几十个这样的SQL查询需求,占用了数据…

2026/7/26 23:58:26
seata 零基础入门实战

seata 零基础入门实战

前言:微服务架构最大的数据一致性难题就是分布式事务。单体项目中,我们依靠Transactional 即可保证数据库事务原子性,要么全部成功、要么全部回滚。但微服务拆分后,一次业务操作会跨多个服务、多个数据库,本地事务彻底…

2026/7/26 23:58:26
iletiMerkezi MCP Server MCP 服务说明文档

iletiMerkezi MCP Server MCP 服务说明文档

1. 服务概述一句话简介:土耳其BTK许可的批量短信/OTP/A2P平台MCP服务器,支持短信发送、投递报告查询、发送者/黑名单管理服务名称:iletiMerkezi MCP Server版本号:Latest开发者/提供方:iletimerkezi协议类型:MCP (Model Context Protocol)2. 核心功能列出该MCP服务提供的主要功…

2026/7/26 23:58:26
行动、交流、创造:都是获得现实反馈的方式。

行动、交流、创造:都是获得现实反馈的方式。

人的成长,本质上是不断用现实修正自己的过程。很多困惑产生于: 想得太多,接触现实太少。第一层:为什么需要现实反馈? 人的大脑很擅长: 想象;推测;模拟未来。 但问题是: 大…

2026/7/26 23:58:26
训练一个 AI 的完整故事:奶茶店版

训练一个 AI 的完整故事:奶茶店版

我们就以「做一个会卖奶茶的 AI 客服」为例,从头到尾走一遍流程。训练一个 AI 的完整故事:奶茶店版 假设你开了家奶茶店,叫「元宝奶茶」,你想雇一个永远不会累、不用发工资、24 小时在线的客服。这个人,就是我们今天要…

2026/7/26 23:53:26

日新闻

月新闻