gpt4 book ai didi

c - 返回二维数组的问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:50:54 24 4
gpt4 key购买 nike

我被要求编写一个程序来获取二维数组(矩阵)、列数和行数,程序将返回转置矩阵(不使用 [][],意思是仅使用指针算法)

我写的程序,确实是转置了矩阵,没问题。我的问题是了解如何返回。这是我的代码:

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?

最佳答案

第一,二维数组不是双指针。

二、动态分配。如果matrix是一个二维数组类型,那么这样写:

typedef int matrix[ROWS][COLUMNS];
typedef int (*matrix_ptr)[COLUMNS];

matrix_ptr transpose_matrix(matrix m, int rows, int cols)
{
matrix_ptr transposed = malloc(sizeof(*transposed) * rows);
// transpose, then
return transposed;
}

关于c - 返回二维数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15509922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com