>>535
> データメンバーを配列としても扱いたいなら手抜きせずunionを使いましょう。

ここまでずっと
union {
struct {float x, y, z;};
float f3[3];
} a;
これがピッタリ重なる保証はないよね?(a.xとa.f3[0]…a.zとa.f3[2])
という話でもあったったのでは?
unionはすべての要素のメモリ開始位置が一致する事以外は保障してないのでは?