2011-03-29 206 views
1

将数组传递给此函数时出现各种错误。该函数假设用户输入一个名称和一个分数,并将它们存储在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

我已经花了最后15分钟看这个,我不确定你想要做什么。为什么你有一个playerName的多维数组?你是否每个球员只储存一个得分,或者每个球员是否有多个得分? – Pete 2011-03-29 02:34:27

+0

Fraser - main()的返回类型应该是** int ** – Mahesh 2011-03-29 02:40:06

回答

1

这看起来像一个学校的任务,我赞赏你没有要求答案。有几种方法可以做到这一点,但您已经非常接近您使用的方法。当你传递数组引用时,你不想包含数组的长度。例如,参数int score[100]应该是int score[]。异常,特别是在您的场景中,是使用多维数组。在这种情况下,您想使用char playerName[][20]。您的函数声明也需要更改以匹配。不要忘记InputData返回一个int。你的声明和函数调用是正确的;你只需要调整你的功能签名。

+0

他还需要通过引用传递numPlayers。他也在改变比分阵列,但没有反应跟踪这些变化。代码有很多错误。我希望他编辑他的问题或回复一些更多的细节。 – Pete 2011-03-29 02:37:38

+0

我做了一些改变,但我很难过。 – 2011-03-29 03:04:45

+0

Akridge你能检查我的编辑吗? – 2011-03-29 03:16:06

1

保持错误一边 -

InputData(numPlayers, playerName, score, size); 
             // ^^^^ size is no where declared 
             // resulting Undeclared indentifier error 

原型提到服用3个参数,但调用传递4个参数的功能。

关于错误提示:

  • 一个一维数组衰减到指向第一元件在阵列中,同时通过对函数的指针。
  • 2D数组衰减到指向1D数组的指针(即T [] [size]),同时传递给函数。
  • 返回类型main()应该是int

这似乎与你纠正大多数的错误给出提示。但你忘了改变原型。你为什么不使用std::string阵列球员的名字

int InputData(int &, char, int); 

int InputData(int &, char[][20], int[]); 

- 所以,改变吗?使用它并删除其余的错误。祝你好运。

+0

我忘记擦除尺寸,但现在就完成了。 – 2011-03-29 03:17:52

+0

@Dave Fraser - 由于它看起来是一个家庭作业,给出的提示你应该能够解决它。还有一点提示:InputData(..)的原型不符合它的定义参数。 – Mahesh 2011-03-29 03:19:27

+0

@ Mahesh我知道它们在进入函数时转换为指针,我的问题是将数组值指定给指针变量。你怎么做到这一点? – 2011-03-29 03:24:48