C 庫宏 - offsetof()

C 標準庫 - <stddef.h> C 標準庫 - <stddef.h>

描述

C 庫宏 offsetof(type, member-designator) 會生成一個類型為 size_t 的整型常量,它是一個結構成員相對於結構開頭的位元組偏移量。成員是由 member-designator 給定的,結構的名稱是在 type 中給定的。

聲明

下麵是 offsetof() 宏的聲明。

offsetof(type, member-designator)

參數

  • type -- 這是一個 class 類型,其中,member-designator 是一個有效的成員指示器。
  • member-designator -- 這是一個 class 類型的成員指示器。

返回值

該宏返回類型為 size_t 的值,表示 type 中成員的偏移量。

實例

下麵的實例演示了 offsetof() 宏的用法。

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

struct address {
   char name[50];
   char street[50];
   int phone;
};

int main()
{
   printf("address 結構中的 name 偏移 = %d 位元組。\n",
   offsetof(struct address, name));

   printf("address 結構中的 street 偏移 = %d 位元組。\n",
   offsetof(struct address, street));

   printf("address 結構中的 phone 偏移 = %d 位元組。\n",
   offsetof(struct address, phone));

   return(0);
}

讓我們編譯並運行上面的程式,這將產生以下結果:

address 結構中的 name 偏移 = 0 位元組。

address 結構中的 street 偏移 = 50 位元組。

address 結構中的 phone 偏移 = 100 位元組。

C 標準庫 - <stddef.h> C 標準庫 - <stddef.h>