c++ offsetof與偏移量的關(guān)系是什么

c++
小樊
86
2024-08-11 09:19:35

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è)成員。

0