结构体变量后边带的冒号:
来源:互联网 发布:知乎推荐书单排行榜 编辑:程序博客网 时间:2024/04/30 14:24
结构体变量后边带的冒号:
结构体中变量后面带有冒号的意义
变量:数字
属于C语言的位段操作可以控制单个的位
C语言允许在一个结构体中以位为单位来指定其成员所占内存长度,这种以位为单位的成员成为“位段”或位域,利用位段能够用较少的位数存储数据。如:
struct packed_data (该例子假定int占2个字节,因为在c语言中int一般都为2字节,若在win32平台则为4位)
{ unsigned a:2;
unsigned b:6;
unsigned c:4;
unsigned d:4;
itn i;} data;
该结构所占的内存大小为8个字节,当然,如果 unsigned d:4没有这一项,其结果仍是吧,因为它还要求满足结构体的对齐方式(可参考博客中#pragma pack一节)
如,定义如下结构体
struct STACON_PACKED
{
UINT32 phyRegisterAddr:5;
UINT32 phyAddr:5;
UINT32 write:1;
UINT32 busy:1;
UINT32 preambleSuppress:1;
UINT32 mdc_Clockrating:3;
UINT32 reserved_0:16;
}__attribute__((__packed__));
那么上面这个结构体只占用32位存储空间,从上到下,位数从低到高.x86系列CPU里还越靠前的位地址越低.
但是分配内存的实际结果,还要看编译器的参数.很可能实际给phyRegisterAddr分配的还是32位4个字节长.
数据的以用方式为
data.a =2;//将数字2存储到两个位中,即 10B
注意:(1)关于位段成员的类型必须指定为 unsigned 或int类型 (2)若每一位段要从下一字节开始,可用以下形式:
unsigned a:1;
unsigned b:2;
unsigned :0;//冒号+0
unsigned c:3;//(另一个单元)
- 结构体变量后边带的冒号:
- 结构体的位域(变量+冒号)
- C语言 struct结构体的变量声明加冒号
- struct结构体的变量声明加冒号
- C语言 struct结构体的变量声明加冒号
- 定义结构体时变量名后的冒号和数字
- 定义结构体时变量名后的冒号和数字
- 定义结构体时变量名后的冒号和数字
- 定义结构体时变量名后的冒号和数字
- 定义结构体时变量名后的冒号和数字
- 定义结构体时变量名后的冒号和数字
- 结构体中冒号的含义
- 结构体定义里的冒号
- 结构体中冒号的作用
- C结构体里的冒号
- (转)结构体冒号
- 结构体中的冒号
- 结构体中的冒号
- 二进制(原码、反码、补码)
- c/c++2:数据结构
- validationGroup和Page_ClientValidate()配合使用解决前端click事件返回为false时验证失效问题
- windows 删除多层目录
- mfc,C++,HTTP,POST方式提交请求
- 结构体变量后边带的冒号:
- 动态规划算法
- 使用libvirt库创建kvm虚拟机
- codeblock_object-c开发环境搭建
- 高通平台MIPI DCS read 方法
- JS和jquery的几个令人迷惑的问题之五-类和模块
- Ubuntu12.04下配置vsftp服务的过程及常见问题分析
- ubuntu设置DNS。重启也有效的方法
- ReportStudio入门教程(四十五) - 文本源变量