1

考虑以下 C 代码:

struct Foo
{
  short a;
  long b;
  char c;
  void* d;
};

我知道使用 sizeof 可以知道整个结构的大小。是否有可能知道这个结构的一个子集的大小,或者(换句话说)知道两个成员之间的距离?我意识到可以根据我想要的偏移量嵌套结构(然后可以使用 sizeof),但是说我想知道 a 和 d 之间的字节数?另外,我想在不实例化对象的情况下执行此操作(类似于 sizeof)。(我意识到如果我有一个对象,那么我可以查看 foo.d 和 foo.a 之间的地址差异)。这可能吗?

4

1 回答 1

6
offsetof(Foo, d) - offsetof(Foo, a)

offsetof为您提供从开头到指定成员的偏移量Foo

你需要#include <stddef.h>

于 2012-07-23T02:55:33.237 回答