構造体の中のある要素へのオフセット算出

対象はC言語。
仕事で見ているソースコードの中にあった奴ですが。

typedef struct _HOGE {
    int     a;
    short   b;
    char    c;
} HOGE;

構造体HOGEの中の要素、例えばshort bのオフセット値を知りたいとします。そして

int offset = (int)&(((HOGE *)0)->b);

こう、と。
アドレス0というところで少しドキッとします(NULLアドレスを”参照”する訳ではない)が…って以前のエントリで似たようなことをやったような…