offsetof介绍
size_t offsetof( structName, memberName )
功能:计算结构体成员相对于起始位置的偏移量
返回值:返回结构体成员相对于起始位置的偏移量
模拟实现
把结构体的初始地址设置为0,此时结构体成员的地址大小就是它所对应的偏移量
#define MY_OFFSETOF(structName,memberName) (unsigned int)&(((structName*)0)->memberName)
测试
#include<stdio.h> struct S { char c; int arr[5]; }; #define MY_OFFSETOF(structName,memberName) (unsigned int)&(((structName*)0)->memberName) int main() { struct S s = { 0 }; printf("%d\n", MY_OFFSETOF(struct S, arr)); return 0; }