我传递了一个大小为10的数组给一个函数,让它对数组进行反向排序,但是在正确排序了数组的前五个元素之后,它出错了。我想在这里对数组'std'进行反向排序,
# include <iostream>
using namespace std;
int reverse(int a[]); //funtion prototype
int main()
{
int std[10] = {0,1,2,3,4,5,6,7,8,9};
reverse(std);
}
int reverse(int a[]) //funtion defination
{
int index = 0;
for (int i = 9; i >= 0; i--)
{
a[index] = a[i]; //swaping values of the array
cout << a[index] << " ";
index++;
}
}
2条答案
按热度按时间67up9zun1#
你的代码基本上有三个问题。
1.你不能交换任何东西
1.你必须把数组的前半部分和后半部分交换,而不是交换整个数组,如果你这样做,那么所有的东西都会交换两次,所以什么都不会改变
1.应该在完成反转后打印反转阵列,而不是在执行反转操作时打印。
下面的代码可以修复所有这些问题
vsikbqxv2#
是的,你可以。我通常不再使用"C"风格的数组了(它们仍然有用,但是它们的行为不像对象)。当把"C"风格的数组传递给函数时,你总是需要手动传递数组的大小(或者做一些假设)。这可能会导致bug。(更不用说指针衰减了)
下面是一个例子: