4

这是 stddef.h 中的一系列宏之一。

#define offsetof(s,m)   (size_t)&(((s *)0)->m)

(s *)0 是什么意思?

4

6 回答 6

7

这是一种编写NULL类型指针的方法pointer-to-s。通过获取地址为 0 的m成员的s地址,您可以得到在 中的偏移ms

于 2013-07-16T11:40:13.870 回答
3

这是一个类型转换,转换0pointer to s.

于 2013-07-16T11:39:34.587 回答
0

这是对s指针的强制转换。s在这种情况下,是宏的一个参数,希望是类型名称。

于 2013-07-16T11:39:39.077 回答
0

创建类型s和第 i 个值为零 (null)的指针

于 2013-07-16T11:39:43.807 回答
0

s 在这里应该是类型名称,例如int, 所以(s*)0基本上是转换0为指针类型。

于 2013-07-16T11:40:04.873 回答
0

0不仅是整数零,而且是空指针。因此((S*)0)将空指针转换为指向的指针s(其中s可能是一个结构)。

于 2013-07-16T11:40:34.950 回答