offsetof() - C函数

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.