在c ++中使用循环遍历数组并且程序说“退出状态-1”?

Posted

技术标签:

【中文标题】在c ++中使用循环遍历数组并且程序说“退出状态-1”?【英文标题】:Iterating through array using loop in c++ and program says "exit status -1"? 【发布时间】:2019-04-16 03:21:02 【问题描述】:

所以我正在努力适应我的硬件分配的数组。我有两个循环。第一个循环遍历序列,这很好,我想我不知道。然后第二个循环应该根据 size_of_array 的大小显示用户输入的所有输入(在这种情况下,它是 5,所以应该是用户输入的 5 辆汽车)。

当我运行它时,第一部分在输入方面工作得很好,但第二部分 F R E A K S 出来并给我“退出状态 -1” wtf?!?!?!??!

感谢帮助:

#include <iostream>
using namespace std;

int main() 

  int size_of_array = 5;
  string ideal_cars[size_of_array];
  int count;

  for (count = 1; count <= size_of_array; count++)
  
    cout << "Enter car number " << count << "." << "\n";
    cin >> ideal_cars[count];
  

  for (count = 0; count <= size_of_array; count++)
  
    cout << "You entered " << ideal_cars[count] << ".";
  



【问题讨论】:

你跑过了数组的末端。在这两个循环中,您都希望从 0 开始,然后转到 count &lt; size_of_array 您的代码没有显示从 int 值的 main 返回...未定义的行为?也许尝试“返回0;”在 main 的末尾。 @JerryCoffin 你是什么意思?您能否通过“数组结尾”的意思给出更多解释/见解?我以为我只是从 0 到 5 我不明白!谢谢你到目前为止的帮助 @2785528 main 在 C++ 中不需要 return 语句。 首先,count = 1 表示它从 1 开始。然后,count &lt;= size_of_array 表示直到计数大于 5 才会退出,这意味着 count 在该循环中的最后一个值将是 5。 【参考方案1】:

数组的第一个索引为 0,所以当size_of_array 为 5 时,可能的索引为 0、1、2、3、4。

第一个元素是ideal_cars[0]。 第二个元素是ideal_cars[1]。 第三个元素是ideal_cars[2]。 第四个元素是ideal_cars[3]。 第五个元素是ideal_cars[4]

ideal_cars[5] 超出范围且不允许。有关图形说明,请参阅http://www.cplusplus.com/doc/tutorial/arrays。

因此,在您的 for 循环中,您需要确保 count 小于且不等于 size_of_array

for (count = 0; count < size_of_array; count++)

例子:

#include <iostream>

using namespace std;

int main() 

  int size_of_array = 5;
  string ideal_cars[size_of_array];
  int count;

  for (count = 0; count < size_of_array; count++)
  
    cout << "Enter car number " << count << "." << endl;
    cin >> ideal_cars[count];
  

  for (count = 0; count < size_of_array; count++)
  
    cout << "You entered " << ideal_cars[count] << "." << endl;
  
  return 0;

演示:https://ideone.com/LWbSeu.

【讨论】:

请再澄清一些?抱歉刚刚开始编码......我真的很困惑,并感谢更多解释。您能否就您的意思提供更多背景信息?为什么你所做的工作而不是我的工作? 添加说明。 为什么 Ideal_cars[5] 超出范围?当您的意思是超出范围时,您是指数组吗?我的数组也是从 0 开始的,那么它不应该是 0 1 2 3 4 吗?那是5个位置?那么,如果我计算 5 个元素,为什么它会超出范围呢?我真的很困惑。教科书代码看起来相同并且工作正常 当您声明 string ideal_cars[5]; 时,您正在创建一个包含 5 个元素的数组。这 5 个元素可以通过ideal_cars[0]ideal_cars[1]ideal_cars[2]ideal_cars[3]ideal_cars[4] 访问。那么ideal_cars[5] 是第 6 个元素吗?请注意,您只使用 string ideal_cars[5]声明数组,ideal_cars[0..4]使用数组。

以上是关于在c ++中使用循环遍历数组并且程序说“退出状态-1”?的主要内容,如果未能解决你的问题,请参考以下文章

分段错误(核心转储)c

PHP中如何使用foreach结构遍历数组?

在c ++中循环遍历数组时遇到问题[关闭]

JAVA中的for循环

C中如何实现数组的传值引用

CalledProcessError 退出状态码 5