C言語編 標準ライブラリのリファレンス offsetof

先頭へ戻る

offsetof

概要 構造体の先頭からメンバまでのバイト数を得る。
ヘッダ stddef.h
形式 #define offsetof(s,m) ((size_t)&(((s*)0)->m))
引数 s 構造体型名
m s の型に含まれているメンバの名前
置換結果 構造体型 s の中で、メンバ m の位置が、構造体の先頭から何バイト目のところにあるかを表す size_t型の定数。
詳細 構造体の先頭から、指定メンバまでのバイト数(オフセット、距離)を得る。結果は定数式であり、コンパイルの段階で確定する。
m がビットフィールドの場合の結果は未定義。
注意
使用例
#include <stddef.h>
#include <stdio.h>

struct Data_tag {
    int    a;
    double b;
    char   c[16];
};

int main(void)
{
    printf( "%u\n", offsetof(struct Data_tag, a) );
    printf( "%u\n", offsetof(struct Data_tag, b) );
    printf( "%u\n", offsetof(struct Data_tag, c) );

    return 0;
}

実行結果:

0
8
16
関連
解説章 第37章


参考リンク

更新履歴

'2018/6/1 新規作成。





標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ


このエントリーをはてなブックマークに追加
rss1.0 取得ボタン RSS