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

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

トップページ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));
}

実行結果:

0
8
16

関連

解説章

第37章


参考リンク


更新履歴

’2018/6/1 新規作成。



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

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

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

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る