【发布时间】:2015-03-15 19:39:56
【问题描述】:
我有一个看起来像这样的函数:
void swapRows(int row_1, int row_2, double **matrix, int n, int m)
{
double arrTemp = (double *)malloc(m * sizeof(double));
int i;
for(i = 0; i < m; i++)
{
arrTemp[i] = matrix[row_1][i];
*matrix[row_1][i] = matrix[row_2][i];
}
for(i = 0; i < m; i++)
{
*matrix[row_2][i] = arrTemp[i];
}
}
我尝试使用两颗星和一颗星来取消引用数组,但无法弄清楚。我不想将它存储在另一个数组中并通过双重函数返回它,我需要从这个 void 函数返回它。我只是交换数组中的行,需要将修改后的数组返回给主函数。
【问题讨论】:
-
除非我错过了这个函数的要点,否则它应该根本没有内存分配。您正在交换 rows,在这种情况下,这意味着只需交换指向两行的两个指针。不需要大容量内存复制。
-
@Kheldar 因为您的编辑原因:不,根本不会运行。
-
@deviantfan 我的观点是修改问题中的代码是一个坏主意,因为它将问题的答案转换为“另一种情况的答案”。如果您仍然觉得您的位置是正确的,请随时回滚^^
-
@Kheldar 是的,没关系,我也这么认为