繁体   English   中英

将2D字符串数组传递给函数时出错(C ++)

[英]Error passing a 2D Array of Strings to a Function (C++)

我需要创建一个程序来输入一周中每天三只猴子所吃的食物量。 输入需要存储在二维数组中。 另外,任何循环都必须包含在辅助函数中,而不是main()中。 每当我尝试将二维数组传递给函数时,都会遇到2个主要错误。

1)31:69:错误:“ char []”的初始化程序过多

2)39:35:错误:数组下标的无效类型'float [int]'

有人可以告诉我我在做什么错吗? 我认为我错误地初始化了字符串数组,然后错误地将其作为参数传递,但是我似乎无法找出正确的方法。

#include <iostream>     // input/output declarations
#include <iomanip>      // i/o manipulator declarations
using namespace std;

const int NUMBER_OF_MONKEYS = 3;

typedef char day[];
void getAmountEaten(float &);

int main()
{
    float monkeyFood[NUMBER_OF_MONKEYS][7];     // 3 rows for monkeys, 7 columns for days
    getAmountEaten(monkeyFood);

    return 0;
}

void getAmountEaten(float &monkeyFood)
{
    day    dayOfWeek = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
    int    monkeyNumber,
           dayNum;

    for (monkeyNumber = 0; monkeyNumber < NUMBER_OF_MONKEYS; monkeyNumber++)
        for (dayNum = 0; dayNum < 7; dayNum++)
        {
            cout << "Enter pounds of food eaten by monkey " << monkeyNumber << "on " << dayOfWeek[dayNum];
            cin  >> monkeyFood[monkeyNumber][dayNum];
        }
}

主要问题是函数的参数。 您尝试通过引用将2D数组传递给函数,但是该函数只能使用按引用传递将单个变量作为参数传递。

由于要传递2D数组作为参考,并且在编译时也具有2D数组的大小!

使用此void getAmountEaten(float (&)[3][7]);

void getAmountEaten(float (&monkeyFood)[3][7])
{
    /****/
}

代替void getAmountEaten(float &);

对于字符部分:

  1. 您正在创建一个字符数组。 但是,您正在使用字符数组初始化每个元素的char数组。

    这里: dayOfWeek = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

    “ Sun”,“ Mon”比单个字符大小占用更多的空间。

  2. 您使用错误的语法创建字符数组。

  3. 如果要创建“字符数组”数组,请使用:

    typedef char* day

    day dayOfWeek[7] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

    但是上面的代码会抛出警告,使用字符串类可以避免。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM