C语言中有这样一个宏offsetof,它的作用是计算结构体成员相对于结构体的偏移,原型如下:
#define offsetof(type, member) (size_t) &((type*)0)->member
参数说明:
- type:结构体类型
- member:结构体成员
原理分析:
偏移 = 成员地址 - 结构体地址,若结构体地址为0,则偏移 = 成员地址;
示例:
#include#define offsetof(type, member) (size_t) &((type*)0)->member typedef struct { char a; int b; int c; }test; void main(void) { printf("offset: %ld %ldrn", offsetof(test, b), offsetof(test, c)); }
输出:
offset: 4 8



