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.