Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么C++程序会导致系统崩溃?_C++ - Fatal编程技术网

为什么C++程序会导致系统崩溃?

为什么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 <&

如果这个程序运行时,我们输入255表示有多少个数字,输入9表示每个数字,则会导致程序崩溃。

为什么程序会崩溃?您只为a分配了10个元素

你告诉用户最多10个。用户忽略此项并键入255。在执行任何其他操作之前,您需要检查用户是否听取了您的警告

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