网站首页 > 文章精选 正文
在阅读代码时,有时会看到定义结构体时,其成员变量会加上冒号和数字,如下图所示。
其实,这是位域操作的表示方法,也就是说后面加上“:1”的意思是这个成员的大小占所定义类型的1 bit。通过sizeof运算法可以看出,结构体worker_t只占一个字节的空间。
sizeof 是一个判断数据类型或者表达式长度的运算符,以字节为单位。
如果把冒号和数字去掉,则可以看到,结构体worker_t占四个字节的空间,如下图所示。
位域的概念
有些信息在存储时,并不需要占用一个完整的字节, 只需占一个或几个二进制位。例如一个开关量,只有0和1两种状态, 因此用一位二进位即可,这样可以节省存储空间。
所以就催生了“位域”结构,位域将1个字节划分成不同的区域,每个区域都有个位域名(也可以理解为变量名),通过位域名即可访问其中的数据。
struct 位域结构名
{
类型说明符 位域名:位域长度;
类型说明符 位域名:位域长度;
......
类型说明符 位域名:位域长度;
};
在使用时需要注意以下几点:
- 位域变量的长度不能大于其类型的长度 (sizeof(类型) * 8);
- 不能用于位域字段的操作:取地址操作符&,位域是若干位空间,是没有地址的;
- 位域可以是无名位域,无名位域只能用作填充或调整位置,不能使用。
扩展阅读
<stdint.h> 是 C99 中引进的一个标准 C 库的头文件,定义了几种扩展的整数类型和宏,如:
- intN_t:表示长度为N位的整型数;
- uintN_t:表示长度为N位的无符号整型数 。
其中 N 可以为 8,16,32,64。
- 上一篇: C语言之核心语法
- 下一篇: 深度学习CV方向高频算法面试题6道|含解析
猜你喜欢
- 2025-05-16 Java 里的基本类型和引用类型
- 2025-05-16 新手小白学Java|零基础入门笔记|原来学Java可以这么简单
- 2025-05-16 深度学习CV方向高频算法面试题6道|含解析
- 2025-05-16 C语言之核心语法
- 2025-05-16 CSP初赛冲刺 计算机体系基本结构
- 2025-05-16 Go语言基础—整型
- 2025-05-16 java基本数据类型
- 2025-05-16 深入探索C语言数据类型:整型、浮点型、字符型全解析!
- 2025-05-16 mysql索引
- 2025-05-16 彻底搞懂PLC的数据类型和数据存储形式(干货汇总-图文并茂)
- 05-16一文学完《图解HTTP》
- 05-16您未被授权查看该页
- 05-16快码住!带你十分钟搞懂HTTP与HTTPS协议及请求的区别
- 05-16一张图带你了解HTTP 9个请求方法,收藏!
- 05-16Java 里的基本类型和引用类型
- 05-16新手小白学Java|零基础入门笔记|原来学Java可以这么简单
- 05-16深度学习CV方向高频算法面试题6道|含解析
- 05-16C语言结构体成员变量名后加冒号和数字的含义
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)