【发布时间】:2014-05-28 10:30:06
【问题描述】:
我正在编写一个没有复制部分的合并排序到一个额外的临时数组中。为此,我创建了一个辅助数组aux
int * aux
aux = (int *) calloc(n, sizeof(int));
其中n 是数组的大小。在函数合并中,我想在最后交换两个数组,方法是使用它们的指针继续我的算法。但是如果我交换指针,并将它们打印到控制台,我得到了奇怪的东西:
在方法本身中,指针被交换。但是,如果我在我的方法之后检查,回到我的主目录,指针就不会再交换了。 我的合并方法的调用:
merge(a, lo, mid, hi, aux);
a 是我的主数组,aux 是辅助数组,lo、mid 和 hi 是整数。
原型:
void merge(int *a, int lo, int mid, int hi, int *aux);
我试着像这样交换它们:
int temp;
temp = a;
a = aux;
aux = temp;
你能帮我解决这个问题吗?
提前致谢!
【问题讨论】:
-
本质上是duplicate of this。
-
我不同意重复的问题,并提名这个问题重新开放。这是一个非常集中的问题,也是一个有用的独立示例,与“重复”不同。
-
我也投票重新开放,因为重复的答案并不能直接回答这个问题。 Kerrek SB 的链接答案非常好,但那里的问题不如这个。
标签: c arrays function pointers swap