你好所有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 ++编程已经有一段时间了,我有点像菜鸟。我感谢任何人提供的任何帮助。
答案 0 :(得分:1)
displayInOrder()
函数期望指向整个数组的指针。相反,您传递了指向cities[5]
的指针。这有两个问题:
cities[4]
,因此您可以在数组边界外访问。你应该这样调用这个函数:
displayInOrder(cities);
不需要使用&
,当用作函数参数时,数组变量会自动衰减到指针。