offsetof
是一个宏,用于获取结构体中某个成员的偏移量。它的定义如下:
#define offsetof(type, member) ((size_t) &((type *)0)->member)
其中,type
是结构体的类型,member
是结构体中的某个成员。这个宏的工作原理是将一个指向类型 type
的空指针转换为指向结构体类型 type
的指针,然后取得该成员的地址,最后转换为 size_t
类型(无符号整型)。
因此,offsetof
宏返回的值就是该成员相对于结构体起始地址的偏移量。通过这个偏移量,我们可以在程序中访问结构体中的各个成员。