Complex为共用体 两个成员, x为int 占4个字节。 dat为结构体,占8个字节(dat.x和dat.y)所以 Complex占8个字节。 前四个字节,x和dat.x共用, 后四个自己为y 。赋值 p=(Complex*)&a[j][0] 这里应该加一个强制转换。 赋值后, 访问&a[j][0]上的数据 就是按照Complex格式进行访问于是 p->x=p->data.x=a[j][0] p->data.y=a[j][1]