union跟位域都可以节省内存,而且union在某些地方还能起到更好看的效果?
比如:
struct Matrix { union { struct { float _f11, _f12, _f13, _f21, _f22, _f23, _f31, _f32, _f33; }; float f[3][3]; }_matrix; }; struct Matrix m;
这个union表示一个3x3的矩阵,直接用m._matrix._f11就能访问矩阵的1,1元素。
这样是不是看上去好看点?
不觉得好看?好吧,其实我也觉得这样的代码也没什么更好看,不过反正就是这么回事吧。
但是union的时候,修改某个成员会覆盖旧的值,所以各个union成员之间需要协商好,需要互斥。
union { int a; float b; }_matrix;
如果要写_matrix.a,哪需要确保_matrix.b已经不需要保留,可以被覆盖了。