【发布时间】:2015-01-09 22:55:47
【问题描述】:
我正在尝试反转int-array 的序列。这是我的代码,它给出了一大堆错误。
#include <cstdlib>
#include <iostream>
using namespace std;
int [] reverseArray(int []);
int main(){
int arr[5] = {3,9,11,2,7};
int arr2[5] = reverseArray(arr);
for (int i = 0; i < 5; ++i)
{
cout << arr2[i] << endl;
}
}
int [] reverseArray(int param[]){
int s = sizeof(param)/sizeof(param[0]);
int j = 0;
int* a[s];
for (int i = s ; i >= 0; i--)
{
a[j] = param[i];
j++;
}
return a;
}
我需要将修改后的数组传回主函数。所以请不要建议我 void 自己处理输出的函数。
【问题讨论】:
-
fyi,标准库中还有一个
std::reverse。 -
打印
s的值(在int s = sizeof(param)/sizeof(param[0]);中)可能会给你一个线索。 -
它们不是两个非常不同的问题。当您将数组作为参数传递时,您的数组会衰减。
sizeof(param)并没有按照你的想法去做。 -
这不是“什么是数组衰减”的副本。是的,OP 不知道数组衰减,但这不是问题也不是答案。
-
@NeilKirk,我认为这是一项任务。如果需要在生产代码中实际反转数组,那么是的,
std:vector或其他东西是更好的选择