offsetof
是一個宏,用于獲取結構體中某個成員的偏移量。它的定義如下:
#define offsetof(type, member) ((size_t) &((type *)0)->member)
其中,type
是結構體的類型,member
是結構體中的某個成員。這個宏的工作原理是將一個指向類型 type
的空指針轉換為指向結構體類型 type
的指針,然后取得該成員的地址,最后轉換為 size_t
類型(無符號整型)。
因此,offsetof
宏返回的值就是該成員相對于結構體起始地址的偏移量。通過這個偏移量,我們可以在程序中訪問結構體中的各個成員。