当前位置: C语言 -- 标准库 -- <stddef.h> -- offsetof

offsetof宏


概要:

offsetof(type,member-designator)


描述:

该宏是一个函数式宏,计算结构成员的偏移值。该宏会扩展为一个整型常量表达式,该表达式类型为size_t类型、值为字节形式表示的结构成员距离结构开始处的偏移值。

如果指定的结构成员是位字段(bit-field),其行为是未定义的。


参数:
type

结构类型。

member-designator

结构成员。


返回值:

该宏返回一个size_t类型的字节形式表示的结构成员偏移值。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
/*宏offsetof范例*/

#include <stddef.h>
#include <stdio.h>

struct data{
    char str[6];
    int a;
    double b;
};

int main(void)
{
    printf("offsetof(struct data, str): %zu\n", offsetof(struct data, str));
    printf("offsetof(struct data, a): %zu\n", offsetof(struct data, a));
    printf("offsetof(struct data, b): %zu\n", offsetof(struct data, b));

    return 0;
}

输出:

offsetof(struct data, str): 0

offsetof(struct data, a): 8

offsetof(struct data, b): 16


相关内容:
size_t 表示sizeof运算符运算结果的无符号整数类型。