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.