C-standard-library-c-macro-offsetof

提供:Dev Guides
移動先:案内検索

Cライブラリマクロ-offsetof()

説明

Cライブラリマクロ* offsetof(type、member-designator)は、構造体の先頭からの構造体メンバーのバイト単位のオフセットである *size_t 型の定数整数になります。 メンバーはmember-designatorによって指定され、構造の名前はtypeで指定されます。

宣言

以下は、offsetof()マクロの宣言です。

offsetof(type, member-designator)

パラメーター

  • type -これは、member-designatorが有効なメンバー指定子であるクラスタイプです。
  • member-designator -これは、クラスタイプのメンバー指定子です。

戻り値

このマクロは、 size_t 型の値を返します。これは、typeのメンバーのオフセット値です。

次の例は、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.\n",
   offsetof(struct address, name));

   printf("street offset = %d byte in address structure.\n",
   offsetof(struct address, street));

   printf("phone offset = %d byte in address structure.\n",
   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.