打印字符串数组时出现分段错误

时间:2018-02-08 18:56:33

标签: c++ arrays string

你好所有c ++ noob在这里, 对于我在c ++中的作业,我必须创建一个输入5个城市的程序,并按照用户选择使用数组和单独的函数按顺序打印它们。作业要求您使用所有这些功能进行操作。程序运行正常,直到我输入o或r为逆序。我收到分段错误。我想我正在打印或传递不正确的字符串。

这是我对数组函数的声明

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]);

现在我正在调用这个函数。

this.RequestContext.Principal.IsInRole(roleName)

我认为我要么错误地调用该函数,要么错误地指出它,要么打错了。我用C ++编程已经有一段时间了,我有点像菜鸟。我感谢任何人提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

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

  1. 它是指向特定元素的指针,而不是整个数组。
  2. 数组的最后一个元素是cities[4],因此您可以在数组边界外访问。
  3. 你应该这样调用这个函数:

    displayInOrder(cities);
    

    不需要使用&,当用作函数参数时,数组变量会自动衰减到指针。