C语言结构体之位段

 位段(节约内存),和王者段位联想记忆

        位段是为了节约内存的。刚好和结构体相反。

        那么什么是位段呢?我们现引入情景:我么如果要记录一个人是男是女,用数字0 1表示。我们发现只要一个bit内存就可以完成我们想要的情况。那么我们这时就可以用位段

        位段的语法

        

        后面的 1,4就是分配的比特数。变量占1bit,b变量占4bit。如果我们要详细说明语法,我们首先要了解它是增么分配类存的。

        位段的内存分配(vs里面)

                内存分配和前面的类型有关,a是char类型。所以要用char的一个字节来进行分配

                那么会从右往左进行分配,a需要一个bit就分配1bit

                然后继续分配b的

                那么整个结构体内存就占1字节。如果是下面的情况:

                

                那么a给了5bit,但是我们b无法在这个字节开辟内存了。所以跳到下个字节:

                然后再从右到左开辟

                那么就开辟好了,一共占2个字节。

                我们以一个字节为单位是依据哪里来的呢?就是char来决定的,如果换成int,就要一次以4个字节就是32个bit来开辟内存。

                我们要注意一个细节,前面的例子a,b存在一个字节里面是a,b都是char的情况下。所以我们为了保证位段开辟内存的稳定,我们尽量要用同一个内型的变量开辟。

                 那么语法我们自然而然的就懂了。什么时候用char,什么时候用int。如果是开头的只用1个bit我们就用char,最后产生1字节的内存消耗

        位段的缺点

                因为位段以一个类型单位字节为单位在内存中规划,不同编译器的规划方向不同,VS是从右向左存储,连续存放直到存不下的时候就跳过下一个相邻的字节单位继续规划,字节单位地址从小到大。位段舍弃还是利用不确定,int在16位下为2字节,int表示无符号还是有符号也是不确定的。所以位段的可移植性是有点差的。

                所以大家谨慎使用!

        位段的运用

                位段在我们平时发消息里面是很重要的:我们发消息是要有ip地址,自己发的消息,还有一些设么转码的。这些内存并不大。所以我们要用位段来减小内存的开销,提高发送的效率。   

                     

           位段的注意事项

                因为位段是以bit来算的,而地址是对应字节的。所以段位是没有地址的!

                

                只有结构体名可以取地址,其内部的成员是不能取地址的!                       ​​​​​​​      ​​​​

                 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/489918.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Chrome浏览器修改网页内容

方法一:使用开发者工具 在Chrome浏览器中打开要修改的网页。按下F12键打开开发者工具。在开发者工具窗口中,找到“Elements”标签页。在“Elements”标签页中,找到要修改的网页元素。双击要修改的网页元素,即可进行编辑。 方法二…

C++ 之LeetCode刷题记录(四十)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅。 目标:执行用时击败90%以上使用 C 的用户。 27. 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值…

【码云Git提交】Windows

一、第一次提交 1.登录码云创仓库 2.观察创建后的提示,就有步骤命令了 3.我们在系统中打开一个测试文件夹窗口打开GitBash PS:(你需要提前装一个Node,本章不介绍) 我们打开一个创建的test测试文件夹窗口,…

gif格式动图怎么制作?分享一种制作gif的方法

制作gif动图是非常有趣的,通过自制gif表情包能够丰富你的图片库,让你在社交平台上轻松的与朋友互动。那么,如何自己制作gif动画呢?很简单,通过使用gif图片制作(https://www.gif.cn/)工具-GIF中文…

【PLC】PROFIBUS(一):介绍

1、简介 PROFIBUS (Process Fieldbus),德国SIEMENS和其它机构联合开发; 1999年,PROFIBUS成为国际工业现场总线协议标准IEC61158的组成部分; PROFIBUS 由三部分组成:PROFIBUS-DP、PROFIBUS-PA 和 PROFIBUS-FMS&#xf…

038—pandas 重采样线性插补

前言 在数据处理时,由于采集数据量有限,或者采集数据粒度过小,经常需要对数据重采样。在本例中,我们将实现一个类型超分辨率的操作。 思路: 首先将原始数据长度扩展为 3 倍,可以使用 loc[] 方法对索引扩…

Power Query 中转换时区

当我们的数据库在国内,使用报表的是国外的人时,通常数据库的刷新时间都会设置为UTC,这时我们就学院根据不同国家的时区来设置相对应的时间。我们就要用到时区的转换。 具体的步骤如下: 1,把时间转换为UTC的时区 添加…

眼观百遍,不如手敲一遍

眼观百遍,不如手敲一遍 Repetitive Viewing Cannot Surpass Hands-on Typing 在现代教育体系中,编程已成为一项基础而关键的技能。伴随着各种便捷的工具和在线资源的普及,获取并复制代码变得前所未有地容易。然而,在这种趋势下&am…

【MD】激光驱动原子动力学的全尺寸从头算模拟

Zeng Q, Chen B, Zhang S, et al. Full-scale ab initio simulations of laser-driven atomistic dynamics[J]. npj Computational Materials, 2023, 9(1): 213.核心研究内容: 本文研究了激光驱动的原子动力学的全尺度从头算模拟。研究的重点是探讨在极端条件下材料…

使用Docker本地搭建蚂蚁笔记并实现无公网IP远程访问

文章目录 1. 安装Docker2. Docker本地部署Leanote蚂蚁笔记3. 安装cpolar内网穿透4. 固定Leanote蚂蚁笔记公网地址 本篇文章介绍如何使用Docker部署Leanote蚂蚁笔记,并且结合cpolar内网穿透实现公网远程访问本地笔记编辑并制作个人博客等。 Leanote 蚂蚁笔记是一款云…

力扣_203_移除链表元素(c语言)

解题方法: struct ListNode* removeElements(struct ListNode* head, int val) {struct ListNode* newhead,*newtail;newheadnewtailNULL;struct ListNode*pcurhead;while(pcur){if(pcur->val!val){if(newheadNULL)newheadnewtailpcur;else{newtail->nextpcu…

【Pt】马灯贴图绘制过程 01-制作基础色

目录 一、导入模型并烘焙 二、制作基础底漆 (1)底漆层 (2)水痕层 (3)指纹层 一、导入模型并烘焙 1. 导入模型,马灯模型如下所示 2. 在纹理集设置中点击“烘焙模型贴图” 设置输出大小为…

Kali开启远程服务

一,先切换root账户 二、kali开启远程服务 1,修改远程登录的配置文件 vim /etc/ssh/sshd_config (用文本编辑器打开此文件) 在文件的普通模式下,使用/PermitRootLogin,回车,查找到该行,i&#…

海外媒体软文发稿:谷歌关键词优化细分人群成功案例,突破海外市场!

海外媒体软文发稿:谷歌关键词优化细分人群成功案例,突破海外市场! 引言 在全球化的时代,海外市场对于企业的发展至关重要。而在海外市场中,互联网媒体的作用不可忽视。本篇教程将介绍如何通过谷歌关键词优化细分人群…

视频素材app有哪些?视频素材网址推荐

在这个视觉传达愈发重要的时代,拥有一款好的无水印短视频素材网站就如同握有一把打开创意之门的钥匙,选择合适的短视频素材平台至关重要,这会让你的视频制作更加轻松而高效。 1,蛙学府 以其广泛的优质视频素材库而闻名&#xff0…

桉木芯清水模板,大显身手之作 — 能强优品木业助力工程建设

在现代建筑施工中,清水建筑模板的选择对于工程质量和效率至关重要。贵港市能强优品木业有限公司凭借25年的专业经验,成为了广西清水建筑模板领域的佼佼者。公司生产的桉木芯清水模板材质优良、镜面效果出众,尤其适合大型工程施工。 该公司的清水建筑模板采用优质桉木作为芯材,木…

记录些LangChain相关的知识

RAG的输出准确率 RAG的输出准确率 向量信息保留率 * 语义搜索准确率 * LLM准确率RAG的输出准确率由三个因素共同决定:向量信息保留率、语义搜索准确率以及LLM准确率。这三个因素是依次作用的,因此准确率实际上是它们的乘积。这意味着,任何一…

小学科学期刊投稿邮箱论文发表

《小学科学》是由国家新闻出版总署批准的教育理论类半月刊,由长春出版传媒集团有限责任公司主管主办,旨在为广大一线科学教师、教研员和其他教育工作者提供一个展示传播、交流、研讨科学教育及教研成果的平台,促进小学科学教育工作者的沟通与…

【微服务-网关】SpringCloud GateWay核心技术

在前面的文章中我们介绍了微服务网关的基础知识,了解了什么是网关,网关有什么作用,以及市面上有哪些成熟的网关产品,最后了解了网关的配置技巧。通过上篇文章,大家应该可以在微服务架构中完成网关的基本配置。 但是&am…

君正X2100 RTOS JPEG硬件编码

一、配置 进入SDK的tools/iconfigtool/IConfigToolApp目录,执行./IConfigTool指令,进入配置界面: Config.in 是生成配置界面的文件,Config是需要修改的配置文件,选择之后点击Open。 选择 xburst2系列CPU->X2000系列…
最新文章