打印我的字符串阵列时,会遇到细分错误

Getting a segmentation error when printing my array of strings

本文关键字:遇到 细分 错误 我的 字符串 阵列 打印      更新时间:2023-10-16

你好所有c noob在这里,对于我在C 中的作业,我必须创建一个程序,该程序输入5个城市,并通过使用数组和分开功能将用户选择按顺序打印和反向顺序。作业要求您使用所有这些功能进行操作。该程序运行良好,直到我输入O或R进行反向顺序。我有一个细分错误。我想我正在不正确地打印或通过字符串。

这是我对数组函数的声明

void displayInOrder (string o[5]);

现在,这是我使用可执行代码的功能。

void displayInOrder (string o[5])
{
    cout << "Here are the cities in order: " << endl;
    cout << o[0] << " " << o[1] << " " << o[2] << " " << o[3] << " " << o[4] 
         << endl;   //the error seems to lie somewhere in here and the same 
                    //in the reverse function
}

现在在主机上,我正在称呼这样的函数。

displayInOrder (&cities[5]);

我认为我要么将功能错误地称为错误,要么将其宣布错误,要么打印错误。自从我在C 中编程以来已经有一段时间了,我有点菜鸟。感谢任何人必须提供的任何帮助。

displayInOrder()函数期望指向整个数组的指针。相反,您将指针传递给cities[5]。这有两个问题:

  1. 这是指向特定元素的指针,而不是整个数组。
  2. 数组的最后一个元素是cities[4],因此您要在数组范围外访问。

您应该以这种方式调用功能:

displayInOrder(cities);

无需使用&,当用作函数参数时,数组变量会自动腐烂到指针。