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