簡體   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