union的代码有点难理解额

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已经不需要保留,可以被覆盖了。

原文地址:https://www.cnblogs.com/zzSoftware/p/3342953.html