我被要求编写一个获取二维数组(矩阵)、列数和行数的程序,程序将返回转置矩阵(不使用 [][],意味着仅使用指针算术)
我写的程序,确实对矩阵进行了转置,没问题。我的问题是了解如何返回。这是我的代码:
int** transpose_matrix(matrix mat1,int number_of_rows,int number_of_columns)
{
matrix mat2;
int row_index,column_index;
for(row_index=0;row_index<number_of_rows;row_index++)
{
for(column_index=0;column_index<number_of_columns;column_index++)
**(mat2+(column_index*number_of_rows)+row_index)=**(mat1+(row_index*number_of_columns)+column_index);
}
// at this point, mat2 is exactly the transpose of mat1
return mat2;
}
现在这是我的问题:我不能返回一个矩阵,我能做的最接近的事情是返回矩阵的第一个值的地址,但即使我这样做了,只要我这样做,矩阵的所有其余部分都将无法使用退出 transpose_matrix 函数回到 void main...我怎样才能返回 mat2?