offsetof是一个宏,它不是函数。
下面的图是offsetof的宏定义
**offsetof括号里有两个参数,一个是结构体的类型,一个是结构体里面的成员
(size_t)其实就是unsigned int类型, s 是结构体类型,s *是结构体指针,
(s *)0就是把常量0强制转换为结构体的首地址,相当于把结构体中第
一个成员的地址假设为0.此时结构体的第一个成员的地址其实就是结
构体的首地址,(s *)0)->m就是访问结构体里面的成员,之后用&把成
员的地址取出来,再把取出来的地址强制转换为int型,就得到了每个成员的偏移量。**