我编写了这段代码,它应该从用户那里获取数组的大小和组件,然后返回数组的反向,但无法识别和修复错误。我最好的猜测是while循环在制造麻烦,但我不确定。
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
// function to reverse given array
void reverseArray(int arr[], int start, int end){
while (start<=end){
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
// function to print given array
void printArray(int arr[], int size){
for (int i = 0; i < size; i++)
cout << arr[i] << " ";
}
int main() {
int n;
cin >> n;
int mainarray[] = {n} ;
n = sizeof(mainarray);
for (int i=0; i<n; i++) {
cin >> mainarray[i];
}
reverseArray(mainarray , 0, n-1);
printArray(mainarray ,n);
return 0;
}
int mainarray[] = {n} ;
n = sizeof(mainarray);
这是一种用n
元素分配数组的错误方法。这是用一个元素分配数组,然后用数组占用的字节数覆盖n
。
您应该为分配执行以下操作,而不是这样:
int* mainarray = new int[n];
然后,在返回0;
之前,您应该通过执行以下操作来清理此内容:
delete[] mainarray;