c ++将2d数组传递给函数

时间:2013-04-09 17:26:16

标签: c++ arrays function 2d

我知道我的代码还没有完成但我没有要求它完成。它应该输入由一只一周的3只猴子吃掉的食物和其他东西。但我遇到了麻烦。当我把cin放在poundsEaten函数中时,它给了我一个错误(错误:没有运算符“<<”匹配这些操作数)。我没有正确传递数组是为什么它不工作?谢谢你的帮助

#include <iomanip>
#include <iostream>
using namespace std;

//Global Constants
const int NUM_MONKEYS = 3;
const int DAYS = 7;

//Prototypes
void poundsEaten(const double[][DAYS],int, int);
void averageEaten();
void least();
void most();

int main()
{
    //const int NUM_MONKEYS = 3;
    //const int DAYS = 7;
    double foodEaten[NUM_MONKEYS][DAYS]; //Array with 3 rows, 7 columns

    poundsEaten(foodEaten, NUM_MONKEYS, DAYS);

    system("pause");
    return 0;
}

void poundsEaten(const double array[][DAYS], int rows, int cols)
{
    for(int index = 0; index < rows; index++)
    {
        for(int count = 0; count < DAYS; count++)
        {
            cout << "Pounds of food eaten on day " << (index + 1);
            cout << " by monkey " << (count + 1);
            cin >> array[index][count];
            // Here is where i get the error
        }
    } 
}

2 个答案:

答案 0 :(得分:0)

您已将array声明为包含const double s。它们是不变的,所以你不能像对待cin >> array[index][count];那样写信给他们。只需将参数声明更改为:

double array[][DAYS]

也许您应该考虑何时以及为什么要将变量声明为const

除了避免以后混淆之外,这里值得一提的是没有数组类型参数这样的东西。以上参数实际上转换为:

double (*array)[DAYS]

但是,您的代码已正确编写以便与此一起使用(您将row的数量传递给函数。)

答案 1 :(得分:0)

你声明:

const double array[][DAYS],

但是,在poundsEaten函数内,您要求用户输入信息以填充array,这意味着array不是const,因此,错误。从参数中删除const限定符,以便可以通过用户输入更改array

void poundsEaten(double array[][DAYS], int rows, int cols)

顺便说一句:不要使用array作为数组的变量名,使用其他名称进行良好练习。 同时,cols功能中未使用poundsEaten