#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;
}


如果运行此程序,然后输入255作为数字,每个数字输入9,它将导致程序崩溃。

最佳答案

您正在使用nums[0]作为循环的最大界限

  for (int i = 0; i < nums[0]; i++)
  {
     cout << "Enter number " << i << endl;
     cin >> a[i];
  }


在您的情况下,您要进行255次循环,并且在每次迭代中,请将值添加到a[i]中。

您声明了数组a的大小为10个元素,但是您试图添加255个元素。

这就是问题。 a的大小必须与主循环的最大界限值(nums[0])相同。

关于c++ - 为什么此C++程序会导致系统崩溃?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46416785/

10-13 08:20