Чтобы добавить к тому, что Филипп пишет: Microsoft использует это в DirectX для определения своего D3DMATRIX
(и производной структуры `D3DXMATRIX) следующим образом:
typedef struct _D3DMATRIX {
union {
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];
};
} D3DMATRIX;
Это позволяет вам обращаться к элементам матрицы либо по имени, либо по индексу: и myMat._12
, и myMat.m[0][1]
относятся ко второму элементу в первой строке матрицы myMat
. Это на самом деле просто синтаксический сахар, так как даже самый компилятор braindead оптимизирует доступ, такой как myMat.m[0][1]
, в расчете с постоянным смещением.