是否可以在不手动复制整个矩阵的情况下更改指针的地址?

时间:2019-04-10 16:55:20

标签: c pointers matrix

我有一个用指针定义的矩阵,并且在一个函数中,该矩阵是通过引用传递的;在函数中,我希望将矩阵更改为其他矩阵(其中一个维是不同的),并且我不希望使用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的新值重新分配它们;尽管这似乎可行,但也非常耗时

0 个答案:

没有答案