offsetof是C語言中的一個宏,用于獲取結(jié)構(gòu)體中成員的偏移量(即該成員相對于結(jié)構(gòu)體起始地址的偏移量)。
它的用法如下:
#include <stddef.h>
struct Example {
int a;
char b;
double c;
};
int main() {
size_t offset = offsetof(struct Example, b);
printf("Offset of 'b' in struct Example: %zu\n", offset);
return 0;
}
在上面的例子中,我們定義了一個結(jié)構(gòu)體Example,它包含三個成員:a、b和c。然后我們使用offsetof宏來獲取’b’成員在結(jié)構(gòu)體Example中的偏移量,并將其打印出來。
注意,需要包含頭文件stddef.h來使用offsetof宏。此外,由于offsetof返回的是一個size_t類型的值,因此在打印時需要使用%zu格式說明符。
offsetof的作用在于在編寫代碼時,可以通過這個宏來獲取結(jié)構(gòu)體中各個成員的偏移量,從而可以方便地進行指針運算或者訪問成員。