反转数组的代码中存在分段错误

问题描述 投票:0回答:1
#include <bits/stdc++.h>
using namespace std;

int main(){
int n,i,j;
int arr[n];
cin>>n;
for (j = 0; j < n; j++) {
    cin >> arr[j];
}
for (i = n+1; i >=0; i--) {
    cout << arr[i] << " ";
}
}

对于大多数测试用例,它显示给定代码的分段错误。怎么解决?

该代码不适用于所有测试用例。

c++ segmentation-fault
1个回答
0
投票

对于第二个

for
循环,它应该是
n-1
而不是
n+1
,因为任何大于或等于 n 的内容都将超出索引。

for (int i = n - 1; i >= 0; i--) {  
     cout << arr[i] << " ";  
}
© www.soinside.com 2019 - 2024. All rights reserved.