構造体メンバのアドレスのオフセットを取得
#include <stdio.h>
#include <stddef.h> // offsetof()
struct x
{
int a;
char b;
};
size_t sz;
sz =
/* offsetof(Data, Member) */
offsetof(struct x, a);
printf("%zu\n", sz);
sz = offsetof(struct x, b);
printf("%zu\n", sz);
#include <stdio.h>
struct Test
{
char c;
int n;
double d;
};
int main(void)
{
size_t sc = (size_t) &((struct Test*)0)-> c;
size_t sn = (size_t) &((struct Test*)0)-> n;
size_t sd = (size_t) &((struct Test*)0)-> d;
printf("%d %d %d\n", sc, sn, sd);
return 0;
}