C库宏offsetof(type, member-designator) 结果在一个常数整数 size_t 类型是一个结构成员的结构从一开始的字节偏移。构件由下式给出部件指示符,是由于在不同的结构的名称。
声明
以下是声明的 offsetof() 宏。
offsetof(type, member-designator)
参数
-
type -- 这个类成员指示符类型是一个有效的成员指示符。
-
member-designator -- 这是类类型成员指示符。
返回值
该宏返回值的类型是size_t,该类型成员的偏移值。
例子
下面的例子演示了如何使用offsetof() 宏。
#include <stddef.h> #include <stdio.h> struct address { char name[50]; char street[50]; int phone; }; int main() { printf("name offset = %d byte in address structure. ", offsetof(struct address, name)); printf("street offset = %d byte in address structure. ", offsetof(struct address, street)); printf("phone offset = %d byte in address structure. ", offsetof(struct address, phone)); return(0); }
让我们编译和运行上面的程序,这将产生以下结果:
name offset = 0 byte in address structure. street offset = 50 byte in address structure. phone offset = 100 byte in address structure.