提问者:小点点

一个C++程序,从用户那里获取数组的大小和组件,并返回反向数组


我编写了这段代码,它应该从用户那里获取数组的大小和组件,然后返回数组的反向,但无法识别和修复错误。我最好的猜测是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;
}

共1个答案

匿名用户

int mainarray[] = {n} ; 
n = sizeof(mainarray);

这是一种用n元素分配数组的错误方法。这是用一个元素分配数组,然后用数组占用的字节数覆盖n

您应该为分配执行以下操作,而不是这样:

int* mainarray = new int[n];

然后,在返回0;之前,您应该通过执行以下操作来清理此内容:

delete[] mainarray;

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(c++|程序|用户|获取|数组|大小|组件|返回|反向|数组)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?