Меня попросили написать программу, которая получает двумерный массив (матрицу), количество столбцов и количество строк, и программа будет возвращать транспонированную матрицу (без использования [][], то есть только с использованием арифметики указателя)
Программа, которую я написал, действительно транспонирует матрицу, это не проблема. Моя проблема заключается в том, чтобы понять, как вернуться. вот мой код:
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?