NAME |LIBRARY |SYNOPSIS |DESCRIPTION |RETURN VALUE |STANDARDS |HISTORY |EXAMPLES |COLOPHON | |
offsetof(3) Library Functions Manualoffsetof(3)offsetof - offset of a structure member
Standard C library (libc,-lc)
#include <stddef.h>size_t offsetof(type,member);
The macrooffsetof() returns the offset of the fieldmember from the start of the structuretype. This macro is useful because the sizes of the fields that compose a structure can vary across implementations, and compilers may insert different numbers of padding bytes between fields. Consequently, an element's offset is not necessarily given by the sum of the sizes of the previous elements. A compiler error will result ifmember is not aligned to a byte boundary (i.e., it is a bit field).
offsetof() returns the offset of the givenmember within the giventype, in units of bytes.
C11, POSIX.1-2008.
POSIX.1-2001, C89.
On a Linux/i386 system, when compiled using the defaultgcc(1) options, the program below produces the following output: $./a.out offsets: i=0; c=4; d=8 a=16 sizeof(struct s)=16Program 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); } This page is part of theman-pages (Linux kernel and C library user-space interface documentation) project. Information about the project can be found at ⟨https://www.kernel.org/doc/man-pages/⟩. If you have a bug report for this manual page, see ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩. This page was obtained from the tarball man-pages-6.15.tar.gz fetched from ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on 2025-08-11. If you discover any rendering problems in this HTML version of the page, or you believe there is a better or more up- to-date source for the page, or you have corrections or improvements to the information in this COLOPHON (which isnot part of the original manual page), send a mail to man-pages@man7.orgLinux man-pages 6.15 2025-05-17offsetof(3)Pages that refer to this page:readdir(3), size_t(3type)
Copyright and license for this manual page
HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface. For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere. Hosting byjambit GmbH. | ![]() |