我有一个用指针定义的矩阵,并且在一个函数中,该矩阵是通过引用传递的;在函数中,我希望将矩阵更改为其他矩阵(其中一个维是不同的),并且我不希望使用for循环(大量数据)重新分配和复制整个矩阵。我想知道如何做,我的代码如下:
double **matrix;
matrix = malloc(rows*sizeof(double*));
for(i=0; i<rows; i++){
matrix[i] = malloc(columns*sizeof(double));
}
...
my_function(matrix,rows, columns);
函数为:
double my_function(double **matrix, int rows, int columns){
double **new_matrix
...
return new_rows /*the columns stay the same*/
}
编辑:行数变小,但是矩阵中的所有元素都变了;我想到了两种方法,但我不知道其中任何一种是否可行:
1)在函数编写内部
matrix = new_matrix
是否可以使函数结束后可以使用矩阵访问new_matrix?
2)在函数内部编写某种嵌套循环以释放matrix
的所有列和行,然后使用new_matrix
的新值重新分配它们;尽管这似乎可行,但也非常耗时