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;
}