介绍位段,枚举和联合

简介: 介绍位段,枚举和联合

位段就是由结构体来实现的。

位段的成员后有一个冒号和一个数字。位段时一种节省空间的做法。

位段的内存分配

位段的成员可以是 int 、unsigned int 、signed int 或者是 char 等类型。

位段的空间上是按照需要以4个字节( int )或者1个字节( char )的方式来开辟的。

也就是说刚开始程序一看是int型的,就给你4个byte位,也就是32个字节,如果说不够,继续4个字节4个字节地开辟。

位段涉及很多不确定因素,位段是不跨平台的,注重可移植的程序应该避免使⽤位段。

同时应该注意,冒号后面的数字不能超过其类型的大小。

struct S
{
char a:3;
char b:4;
char c:5;
char d:4;
};
struct S s = {0};

首先给char一个byte位,a用掉3个,还剩5个。b需要4个,b用完还剩下1个,然后c再开辟一个字节,轮到c,再开辟1个byte位。c用了5个bit,还剩3个bit,d还需要4个,那么此时是否还需要开辟1个byte位呢?

我们运行程序,计算一下大小,如果是3byte,就证明前面的一个字节被浪费了。结果是3,证明前面一个bit被浪费了。

10的二进制数就是1010,但是a只能放三个字节,但是没有关系,能放几个字节就放几个字节,那么就放010吧(从右向左使用)。12也就是1100,4个bit能够放下。 此时剩余一个bit位,按照我们前面的分析,这一个bit位应该被浪费掉。到c这里再开辟一个字节。放3,3的二进制序列也就是011,c是占5个bit位的,我们放5个bit位进去,也就是00011。d需要4个bit位,位置不够,再开辟一个字节。

1. int位段被当成有符号数还是⽆符号数是不确定的。

2. 位段中最大位的数目不能确定。(16位机器最大16,32位机器最⼤32,写成27,在16位机器会

出问题。

3. 位段中的成员在内存中从左向右分配,还是从右向左分配标准尚未定义。

4. 当⼀个结构包含两个位段,第⼆个位段成员⽐较大,无法容纳于第⼀个位段剩余的位时,是舍弃

剩余的位还是利用,这是不确定的。

位段使用的注意事项:

枚举

枚举顾名思义就是一一列举。

枚举的结果是012,这表明枚举的结果是依次递增的。

如果在Mon后面加上=1,就可以改变数值:

那么,在上一个通讯录的文章中我们就可以简化:

enum Option
{
  EXIT,
  ADD,
  DEL,
  SEARCH,
  MOD,
  SORT,
};

并且将case 1改为case ADD

枚举常量是不能修改的。枚举类型不是替换的,在调试过程中仍能观察到。

联合体

结果为4,因为大家共用一块空间。

当我们打印这三个的地址,竟然一模一样。

还可以据此判断大小端存储

具体的代码实现如下:

如下联合体的大小就是8,这是为什么呢?

那么,在空间里就是占用了这些空间:

对齐数是4的倍数,那就是16嘛。

相关文章
|
SQL 关系型数据库 数据库
RDS入门——Excel文件转存到RDS数据库实践
本实验将帮助您快速掌握RDS产品的实例开通,熟悉RDS产品的常用功能与基础操作,完成云上数据库搭建。
|
JavaScript 前端开发
1024JS常用的对象总结(第十三课)主要内容String Date Math
1024JS常用的对象总结(第十三课)主要内容String Date Math
239 0
|
Java 关系型数据库 调度
Springboot整合quartz
Springboot整合quartz
|
数据库
LeetCode(数据库)- 最近的三笔订单
LeetCode(数据库)- 最近的三笔订单
181 0
|
.NET 计算机视觉 开发框架
asp.net调用opencv类库,实现图像处理显示
asp.net调用opencv类库,实现图像处理显示     ​      原理上来说,通过dll的调用,无论是asp.net还是winform都可以调用opencv及其类库。但是在实现的过程还是有许多细节是经过摸索和总结才得到结果的。
1493 0
|
4天前
|
弹性计算 运维 搜索推荐
三翼鸟携手阿里云ECS g9i:智慧家庭场景的效能革命与未来生活新范式
三翼鸟是海尔智家旗下全球首个智慧家庭场景品牌,致力于提供覆盖衣、食、住、娱的一站式全场景解决方案。截至2025年,服务近1亿家庭,连接设备超5000万台。面对高并发、低延迟与稳定性挑战,全面升级为阿里云ECS g9i实例,实现连接能力提升40%、故障率下降90%、响应速度提升至120ms以内,成本降低20%,推动智慧家庭体验全面跃迁。
|
4天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
375 92
|
5天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
5天前
|
SQL 人工智能 自然语言处理
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
随着生成式AI的普及,Geo优化(Generative Engine Optimization)已成为企业获客的新战场。然而,缺乏标准化流程(Geo优化sop)导致优化效果参差不齐。本文将深入探讨Geo专家于磊老师提出的“人性化Geo”优化体系,并展示Geo优化sop标准化如何帮助企业实现获客效率提升46%的惊人效果,为企业在AI时代构建稳定的流量护城河。
385 156
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%