c语言-位段通俗理解

位段

字节的问题:假如你迷惑于字节,bit,说明你的原码反码补码不还够深造,来复习一下:内存在数据中的存储时是32bit位,8个bit=一个字节(byte)

学习位段之前先再了解一下结构体与位段的区别

结构体

struct
{
   student;
   age;
};

位段

struct
{
 int students:2;
 int age:5;
}

位段多了数据类型 :其中数组类型定义的有int 与 char
其次还多了‘ :’ :后面的数字表示所需要的bit位
例如:int 数据类型的大小是4个字节,也就是32个bit,这32个bit位是来分配struct
里面‘ :’后面的数字的,且分配是逐级分配的,当下一级不能够分配或分配不了时,便会重新申请4个字节,来满足位段。

struct
{  //1.首先申请数据类型的大小:int→4个字节→32bit;char →一个字节→8个bit
 int students:2;//32-2→剩余30满足下一级
 int age:5;//30-5→剩余25
 //注意25不能说我们就丢弃了,既然我们申请了,一律概不退货
}

位段的内存分配

我们来通过来给位段里面的变量来赋值来观测位段中的内存分配
在这里插入图片描述
刨析过程:
在这里插入图片描述
下面呢,是VS2013的测试数据
在这里插入图片描述

所以位段的内存分配我觉得大家了解一下就足够了,关键的是它的应用与好处。

位段的应用

结构体能干嘛,位段就能干嘛,位段相当于优化了结构体

位段的好处一句话概括:节省空间。

合理利用资源,不像结构体数据申请的字节很多,但很多时候都是浪费的。

最后总结:作为刚刚入门编程的作者

提升 = 问题+解决问题

位段知识点,需要注重的就是二进制的问题,以及数据在内存中存储。

如果你不是很了解数据在内存中的存储,可以先去看一下
内存中的容易混淆的点,帮助你避坑。
链接: link
到这里也就结束了,如果您觉得小编的文笔还不错的话,麻烦点个赞,您的支持,将是对我最大鼓励!bye !886!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值