2 次元配列 (行列)、列数、および行数を取得するプログラムを作成するように依頼されました。プログラムは転置行列を返します ([][] を使用せずに、ポインター演算のみを使用することを意味します)。
私が書いたプログラムは実際に行列を転置しますが、問題ありません。私の問題は、戻る方法を理解することです。ここに私のコードがあります:
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 を返すことができますか?