神戸隆行 <kando@nerimadors.or.jp> writes:

> > あぁ、そうか。Hoge の最初のint member にアクセスするのに、pI
> > にキャストしてもうまくいくとは限らないってことね。そういうア
> > ーキテクチャってあるのかな?
> 
> まぁ、それはあるんですけれども…。
> ポインタをアドレスを指すものと意味づければ殆どの場合に多分動くんですが…。
> 
> 形式的な意味に従って型の違うポインタへのキャストは極力避けておいた方がいいかと。
> 構造体へのポインタと先頭のメンバへのポインタを不用意に混同してキャストして使ってると
> なんといっても読み難いですし、

読み難いし、不用意にしない方がよいのは同意ですが、ちょっと language
lawyer っぽい小うるさいことをいわせていただくと、

       6.7.2.1  Structure and union specifiers

                                                      ... A pointer
       to a structure object, suitably  converted,  points  to  its
       initial  member  (or  if that member is a bit-field, then to
       the unit in which it resides), and vice versa.  There may be
       unnamed  padding  within  a structure object, but not at its
       beginning. 

ですので、Cでは一応どの環境でも動きます。
(まあ、普通は、
  &(struct_ptr->initial_member)
と書くだろうとは思いますが。)

                                前田敦司