结构体成员偏移量
来源:互联网 发布:电动牙刷 推荐 知乎 编辑:程序博客网 时间:2024/05/02 00:37
今天在研究计算C语言中,结构体成员的偏移量问题。发现一个宏定义就可以计算得到,在这里记录一下。
#define offsetof(type, field) (long)&(((type*)0)->field)
其含义是:在不生成结构体实例的情况下计算结构体成员的偏移量。
结构体变量的某成员的地址等于该结构体变量的基址加上结构体成员变量在结构体中的偏移量
(type*)0,就是假设地址0处存放的是一个type类型的结构体变量,这样的话这个结构体变量的基址就是0,所以结构体成员变量的地址的大小在数值上就等于该结构体成员在结构体中的偏移量。
把0换成任何一个数都是可以的,例如OxFF,如下变换:
#define offsetof(type, field) (long)&((((type*)OxFF)->field)-OxFF)
可见还是0方便一些。
应用例子:
#define offsetof(type, field) (long)&(((type*)0)->field)typedef struct { unsigned long dwFreq; unsigned char afclocked:1; unsigned char ucSndsys; }ProgInfo;void main() { printf("%d\n", offsetof(ProgInfo, ucSndsys));//打印ucSndsys在ProgInfo中的偏移量。 }
0 0
- 结构体成员偏移量
- 计算结构体成员地址偏移量...
- 求结构体成员的偏移量
- 结构体成员偏移量的计算
- 结构体中成员变量偏移量
- 计算结构体成员偏移量
- 计算结构体成员偏移量
- 结构体偏移量
- 结构体偏移量
- 求取结构体成员偏移量的宏定义
- 如何求出结构体的成员变量的偏移量
- 通过地址偏移量访问C++结构体数据成员
- c语言 获取结构体成员偏移量方法
- 取(结构体)成员偏移量
- P-结构体成员的偏移量---宏定义实现
- gdb 显示结构体中成员的偏移量
- 求结构体成员偏移量的三种方法
- 结构体成员的偏移量与offsetof函数
- 《挑战程序设计竞赛》 大区间内素数的个数
- iOS通过app1调用app2,同时app隐藏图标
- POI中设置Excel单元格格式
- Unity时钟定时器插件——Vision Timer源码分析之一
- 无聊写排序之 ----第K最值(nth_element)
- 结构体成员偏移量
- POJ - 1338 Ugly Numbers-STL的灵活运用
- poj3621 最优比例生成环
- vs2005 为函数自动添加注释
- Unity笔记 SPACE SHOOTER 实例详解
- Android Application使用
- 最小公倍数问题
- Primeton EOS开发配置
- 快速画程序流程图