【发布时间】:2018-11-21 22:28:09
【问题描述】:
我没有看到我在这段代码中出错的地方:
void swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void array_reverse(int *begin, int *end)
{
int *end2 = end;
int *q = 0;
for (q = begin; q < end; q += 1)
{
swap(q, end2);
end2 -= 1;
}
}
它应该反转数组:
arr{ 1, 2, 3}
变成:
arr{ 3, 2, 1}
我的输出:
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
变成:
[111009824, 2, 3, 4, 5, 6, 7, 8, 9, 10]
(实际上第一个元素总是在我每次编译和测试我的函数时都会改变,并给我我猜的随机值)
【问题讨论】:
-
你得到什么输出?
-
是的,我知道这一点,但为什么在这里:stackoverflow.com/questions/53420928/c-array-sum-using-pointers 我们做 p ++ 是一样的?
-
如果你没有停在数组的中间,你将把它反转两次,然后在你开始的地方结束。
-
请问如何在数组中间停下来
-
pre-decrement
end2因为起初它指向无效数据