【发布时间】:2013-03-08 17:50:10
【问题描述】:
我被要求编写一个获取二维数组(矩阵)、列数和行数的程序,程序将返回转置矩阵(不使用 [][],意味着只使用指针算法)
我写的程序,确实转置了矩阵,没问题。我的问题是了解如何返回。这是我的代码:
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?
【问题讨论】:
-
@nhahtdh malloc 不在堆栈上分配空间。
-
@nhahtdh 这是动态的堆。
-
想到堆,但写堆栈。 #_#
标签: c pointers matrix return transpose