二维数组的本质仍然是一维线性空间(行序优先)。
int mat[3][4];
int *p = (int *)mat;
// 将二维数组转换为一维数组
int r = sizeof(mat)/sizeof(mat[0]);
int c = sizeof(mat[0])/sizeof(mat[0][0]);
int cnt = 0;
for (int i = 0; i < r; ++i)
for (int j = 0; j < c; ++j)
p[i*c + j] = cnt ++;
// i*c ⇒ 行
// +j ⇒ 列