先頭へ戻る

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

Programming Place Plus トップページ -- C言語編 -- 標準ライブラリのリファレンス(名前順)

Programming Place Plus トップページ -- C言語編 -- 標準ライブラリのリファレンス(ヘッダ別)

先頭へ戻る

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 のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー