将数组传递给此函数时出现各种错误。该功能假设让用户输入名称和分数,并将它们存储在2个单独的数组中,一个用于名称,一个用于分数。我相信我必须使用指针,但不知道如何使用它们。我不想要答案,只是朝着正确的方向前进。这是代码:
#include <iostream>
int InputData(int &, char, int);
using namespace std;
int main()
{
char playerName[100][20];
int score[100];
int numPlayers = 0;
InputData(numPlayers, playerName, score);
return 0;
}
int InputData(int &numPlayers, char playerName[][20], int score[])
{
while (numPlayers <= 100)
{
cout << "Enter Player Name (Q to quit): ";
cin.getline(playerName, 100, ‘\n’);
if ((playerName[numPlayers] = 'Q') || (playerName[numPlayers] = 'q'))
return 0;
cout << "Enter score for " << playerName[numPlayers] <<": ";
cin >> score[numPlayers];
numPlayers++;
}
}
好的,我做了一些更改,错误更少,必须越来越近,哈哈!
答案 0 :(得分:1)
这看起来像是一项学校作业,我赞不绝口,因为你没有要求答案。有几种方法可以做到,但您已经在使用的方法中相当接近。传递数组引用时,不希望包含数组的长度。例如,参数int score[100]
应为int score[]
。特殊情况下,例外情况是使用多维数组。在这种情况下,您要使用char playerName[][20]
。您的函数声明也需要更改为匹配。不要忘记InputData返回一个int。您的声明和函数调用是正确的;你只需要调整你的功能签名。
答案 1 :(得分:1)
将错误放在一边 -
InputData(numPlayers, playerName, score, size);
// ^^^^ size is no where declared
// resulting Undeclared indentifier error
原型提到取3个参数但调用函数传递4个参数。
有关错误的提示:
main()
的返回类型应为 int 。在给定的提示中,您似乎纠正了大部分错误。但你忘了改变原型。所以,改变 -
int InputData(int &, char, int);
到
int InputData(int &, char[][20], int[]);
为什么不使用std::string数组作为玩家名称?使用它并删除其余的错误。祝你好运。