应该是你计算的那样34,不计内存对齐。
struct st(union aa; float w[5]; double ave;}m;
这是一个定义了一个结构体st的变量m,其中结构体st由一个联合体aa和两个变量组成。联合体aa包含三个变量:一个float类型的变量x,一个float类型的变量y和一个char数组c。这个结构体st还包含一个float数组w和一个double类型的变量ave。
因此,这个变量m在内存中所占的字节个数应该是float类型的变量x和float类型的变量y的字节数(每个float类型的变量占4个字节)加上char数组c的字节数(c数组的长度是6,所以c数组的字节数是6个字节),加上float数组w的字节数(w数组的长度是5,所以w数组的字节数是20个字节),再加上double类型的变量ave的字节数(double类型的变量占8个字节)。
因此,这个变量m在内存中所占的字节个数是4+4+6+20+8=42个字节。