offsetof(3) Library Functions Manual offsetof(3)
NAME
offsetof - offset of a structure member
LIBRARY
Standard C library (libc, -lc)
SYNOPSIS
#include <stddef.h>
size_t offsetof(type, member);
DESCRIPTION
The macro offsetof() returns the offset of the field member from the
start of the structure type.
This macro is useful because the sizes of the fields that compose a
structure can vary across implementations, and compilers may insert dif-
ferent numbers of padding bytes between fields. Consequently, an ele-
ment's offset is not necessarily given by the sum of the sizes of the
previous elements.
A compiler error will result if member is not aligned to a byte boundary
(i.e., it is a bit field).
RETURN VALUE
offsetof() returns the offset of the given member within the given type,
in units of bytes.
STANDARDS
C11, POSIX.1-2008.
HISTORY
POSIX.1-2001, C89.
EXAMPLES
On a Linux/i386 system, when compiled using the default gcc(1) options,
the program below produces the following output:
$ ./a.out
offsets: i=0; c=4; d=8 a=16
sizeof(struct s)=16
Program source
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
int
main(void)
{
struct s {
int i;
char c;
double d;
char a[];
};
/* Output is compiler dependent */
printf("offsets: i=%zu; c=%zu; d=%zu a=%zu\n",
offsetof(struct s, i), offsetof(struct s, c),
offsetof(struct s, d), offsetof(struct s, a));
printf("sizeof(struct s)=%zu\n", sizeof(struct s));
exit(EXIT_SUCCESS);
}
Linux man-pages 6.9.1 2024-06-15 offsetof(3)
Generated by dwww version 1.16 on Tue Dec 16 04:27:39 CET 2025.