无法将数组传递给函数

时间:2011-03-29 02:07:19

标签: visual-c++ function multidimensional-array

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

好的,我做了一些更改,错误更少,必须越来越近,哈哈!

2 个答案:

答案 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个参数。

有关错误的提示:

  • 1D数组在传递给函数时衰减到指向数组中第一个元素的指针。
  • 当传递给函数时,2D数组衰减到指向1D数组的指针(即T [] [size])。
  • main()的返回类型应为 int

在给定的提示中,您似乎纠正了大部分错误。但你忘了改变原型。所以,改变 -

int InputData(int &, char, int);

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

为什么不使用std::string数组作为玩家名称?使用它并删除其余的错误。祝你好运。