为什么C++程序会导致系统崩溃?
如果这个程序运行时,我们输入255表示有多少个数字,输入9表示每个数字,则会导致程序崩溃。为什么程序会崩溃?您只为a分配了10个元素 你告诉用户最多10个。用户忽略此项并键入255。在执行任何其他操作之前,您需要检查用户是否听取了您的警告为什么C++程序会导致系统崩溃?,c++,C++,如果这个程序运行时,我们输入255表示有多少个数字,输入9表示每个数字,则会导致程序崩溃。为什么程序会崩溃?您只为a分配了10个元素 你告诉用户最多10个。用户忽略此项并键入255。在执行任何其他操作之前,您需要检查用户是否听取了您的警告 #include <iostream> using namespace std; int main() { int nums[20] = { 0 }; int a[10] = { 0 }; cout << a <&
#include <iostream>
using namespace std;
int main()
{
int nums[20] = { 0 };
int a[10] = { 0 };
cout << a << endl;
cout << nums << endl;
cout << "How many numbers? (max of 10)" << endl;
cin >> nums[0];
for (int i = 0; i < nums[0]; i++)
{
cout << "Enter number " << i << endl;
cin >> a[i];
}
// Output the numbers entered
for (int i = 0; i < 10; i++)
cout << a[i] << endl;
return 0;
}
这是因为int a[10]={0};你试着把它索引到第10个单元格或第9个位置。
您需要修复for循环
cout << "How many numbers? (max of 10)" << endl;
cin >> nums[0];
// Has the user listened to your warning?
if (nums[0] > 10) {
cout << "Bad input!" << endl;
return 0;
}
或者在初始化中更改单元格的长度使用nums[0]作为循环的最大界限
for (int i = 0; i < nums[0]; i++)
{
cout << "Enter number " << i << endl;
cin >> a[i];
}
在您的例子中,您正在执行255个循环,并且在每次迭代中,您将值添加到[i]中
您声明数组a的大小为10个元素,但正在尝试添加255个元素
这就是问题所在。a的大小需要与主循环nums[0]的最大界限值相同。它中导致崩溃的第二个值是什么?整个计算机操作系统,或者只是你的程序?如果你正在学习C++,你首先要做的就是了解标准库中可用的工具。在存储类似阵列的数据时,这是一个很好的起点。与固定长度的C样式数组相比,请优先使用这些数组。
for (int i = 0; i < nums[0]; i++)
{
cout << "Enter number " << i << endl;
cin >> a[i];
}