数组 - 运行时错误:索引超出类型 'int [*]' 的界限



用户可以输入两个整数n,k:k<n.

现在必须输入n个任意整数,我想将其存储在数组中。

#include <iostream>
using namespace std;
int main(){
int n, k;
int scores[n];  
cin >> n >> k;

for (int i = 0; i < n; i ++){
cin >> scores[i];
}   
}

对于n=5,k=3,我在输入第三个随机数后得到以下错误消息

untitled.cpp:13:18: runtime error: index 3 out of bounds for type 'int [*]'

如果总数组"0",分数[3]怎么会越界;分数";由5个元素组成?

在读取数据之前,n未初始化并且具有不确定的值。

n的使用必须在阅读之后。

#include <iostream>
using namespace std;
int main(){
int n, k;  
cin >> n >> k;
int scores[n]; // move this

for (int i = 0; i < n; i ++){
cin >> scores[i];
}   
}

还要注意,像这样的可变长度数组不在C++的标准中。请考虑改用std::vector

#include <iostream>
#include <vector>
using namespace std;
int main(){
int n, k;  
cin >> n >> k;
vector<int> scores(n);

for (int i = 0; i < n; i ++){
cin >> scores[i];
}   
}

最新更新