union在XMMATRIX里的妙用

来源:互联网 发布:偷水仙花包饺子 知乎 编辑:程序博客网 时间:2024/05/16 18:25

刚才翻xnamath.h看struct XMMATRIX的用法,发现里面的数据成员用了union,于是去补了下知识……


union是一种内存共用类型,比如下面

struct st{int i;double f;};union un{int i;float f;};

sizeof(st)的话是8,sizeof(un)是4,un里的两个变量都是用同一片内存,修改一个就会直接影响到另外一个,满足一些特殊的数据储存要求


在XMMATRIX里面就可以这样使用的

    union    {        XMVECTOR r[4];        struct        {            FLOAT _11, _12, _13, _14;            FLOAT _21, _22, _23, _24;            FLOAT _31, _32, _33, _34;            FLOAT _41, _42, _43, _44;        };        FLOAT m[4][4];    };

这里的r[4],struct和m[4][4]其实就是同一片数据。好处是啥呢?就是使用时可以直接_11,_12这样访问矩阵单个数据,也可以通过r[0],r[1]这样访问矩阵的某一行,或者用二维数组的方式m[0][0]这样去使用,而不需要专门去写处理转换函数

0 0