将此2D数组传递给函数时,为什么会出现错误?

时间:2014-02-16 04:59:45

标签: c++ arrays

当我尝试将sales数组传递给函数时,我得到了:error

  

C2664:'printArray':无法将参数1从'int [4] [5]'转换为'int'

这是数组和调用:

    int sales[4][5], row, column;

    for (row = 0; row < 4; row++)
    {
        for (column = 0; column < 5; column++)
        {
            cin >> sales[row][column];
        }
    }

printArray(sales);

这是函数:

void printArray(int A[4][5])
{
  for(int R=0;R<4;R++)
  {
     for(int C=0;C<5;C++)
        cout<<setw(10)<<A[R][C];
     cout<<endl;
   }
}

提前致谢。

2 个答案:

答案 0 :(得分:2)

试试这个

void printArray(int A[][5])
{
  for(int R=0;R<4;R++)
  {
     for(int C=0;C<5;C++)
        cout<<setw(10)<<A[R][C];
     cout<<endl;
   }
}

希望这会有所帮助.. :)

修改 还有其他一些方法可以做到这一点。以为我分享给你:

您可以传递指针数组。

void printArray(int *A[4])

您可以将指针传递给指针。

void printArray(int **A)

答案 1 :(得分:0)

您应该将printArray函数修改为以下内容:

void printArray(int *A, int row, int col)
{
  for(int R=0;R<row;R++)
  {
     for(int C=0;C<col;C++)
        cout<<A[R * col +  C] << endl;
   }
}

然后你调用这个函数如图所示:

  printArray(&sales[0][0], 5, 5);

请注意,您将行和列计数作为值传递给函数