OFFSETOF(3) Library Functions Manual OFFSETOF(3)

offsetof
offset of a structure member

#include <stddef.h>

size_t
offsetof(type, member);

The offsetof() macro expands to an integer constant expression of type size_t and yields the offset, in bytes, of the field member from the start of the structure type.

A compiler error will result if member is not aligned to a byte boundary (i.e. it is a bit-field).

Regardless of the architecture and the ABI, the following example prints the value zero for the variable x.
struct example {
	double	x;
	int	y;
	char	z;
};

size_t x, y, z;

x = offsetof(struct example, x);
y = offsetof(struct example, y);
z = offsetof(struct example, z);

(void)printf("%zu %zu %zu\n", x, y, z);

__alignof__(3), stddef(3), typeof(3)

The offsetof() macro conforms to ANSI X3.159-1989 (“ANSI C89”).
April 1, 2011 NetBSD 9.2