[英]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 &);
對於字符部分:
您正在創建一個字符數組。 但是,您正在使用字符數組初始化每個元素的char數組。
這里: dayOfWeek = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
“ Sun”,“ Mon”比單個字符大小占用更多的空間。
您使用錯誤的語法創建字符數組。
如果要創建“字符數組”數組,請使用:
typedef char* day
day dayOfWeek[7] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
但是上面的代碼會拋出警告,使用字符串類可以避免。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.