C++二维数组改为一维数组的方法

比如将矩阵转置的函数:
void inverse(int matrix1[3][6],int middle[6][3]){
int i,j;
for (i=0;i<3;i++)
for (j=0;j<6;j++)
middle[j][i]=matrix1[i][j];
return;
}

可以改成:

void inverse(int matrix1[],int m,int n,int middle[]){
int i,j;
for (i=0;i<m;i++)
for (j=0;j<n;j++)
middle[j*m+i]=matrix1[i*n+j];
return;
}
这里为什么可以改成middle[j*m+i]的格式呢?这里怎么理解【】内的格式呢?我不大懂。。求解

二维数组在内存里其实也是一位数组。
只是访问的时候找到对应的位置即可。
middle[j*m+i] 相当于二位数组的m[j][i].
二维数组也是一片连续内存。
对于二维数组m[j][i]是第j行第i个元素,
在内存里前面有j行共j*m个元素(每行m个,即m列),
在这一行是第i个元素,所以m[j][j]是第j*m+i个元素。
温馨提示:答案为网友推荐,仅供参考
相似回答