C++ A c++;程序从用户处获取阵列的大小和组件,并返回反向阵列

C++ A c++;程序从用户处获取阵列的大小和组件,并返回反向阵列,c++,arrays,C++,Arrays,我已经编写了这段代码,它应该从用户那里获取数组的大小和组件,然后返回数组的相反方向,但无法识别和修复错误。 我最好的猜测是while循环造成了麻烦,但我不确定 #include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> using namespace std; // function to reverse

我已经编写了这段代码,它应该从用户那里获取数组的大小和组件,然后返回数组的相反方向,但无法识别和修复错误。 我最好的猜测是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;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
//函数来反转给定数组
void reversearlay(整数arr[],整数开始,整数结束){
while(启动mainarray[i];
}
反向阵列(主阵列,0,n-1);
打印阵列(主阵列,n);
返回0;
}
n
元素分配数组是错误的。这是用一个元素分配数组,然后用数组占用的字节数覆盖
n

与此相反,您应该为分配执行以下操作:

int* mainarray = new int[n];
然后,在
返回0;
之前,您应该通过执行以下操作来清除此项:

delete[] mainarray;

可变长度数组不是C++的标准特征,即使编译器厂商通过扩展提供它们,也不是声明它们的方式。<代码> int MaxAld[]= {N}声明一个整数的
int
数组。而且
sizeof
用法也错误,返回同一数组中的字节数,而不是整数。您已经有了
n
。使用
sizeof
进行计算既冗余又容易出错(显然)。非常感谢。它起了作用,但请澄清我的疑问:-int*mainarray=new int[n];//指针mainarray现在存储数组new int[n]的位置,并且每当我们在函数中调用mainarray时,new int[]所需位置的内容都会受到影响。我说得对吗?但我仍然不明白删除[]的目的请在解释的地方解释或分享一个链接。那太好了。
delete[] mainarray;