C++ 为什么在将此2D数组传递给函数时出错?
当我尝试将sales数组传递给函数时,我得到以下结果:error C2664:“printArray”:无法将参数1从“int[4][5]”转换为“int” 以下是数组和调用:C++ 为什么在将此2D数组传递给函数时出错?,c++,arrays,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 >>
int sales[4][5], row, column;
for (row = 0; row < 4; row++)
{
for (column = 0; column < 5; column++)
{
cin >> sales[row][column];
}
}
printArray(sales);
int sales[4][5],行、列;
用于(行=0;行<4;行++)
{
用于(列=0;列<5;列++)
{
cin>>销售[行][列];
}
}
打印阵列(销售);
下面是函数:
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;
}
}
void打印数组(int A[4][5])
{
对于(int R=0;R试试这个
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)
您应该将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(int A[][5])请看一看,确保函数定义上的prototype参数相同谢谢您的帮助。我删除了4并阅读了这些链接。对我来说,这看起来不错,但我仍然得到相同的转换错误。@mr5您能详细说明吗?谢谢,但我在使用该代码时遇到此错误:错误C2664:“printArray”:无法转换参数r 1从'int*'到'int[][5]'您如何调用该函数?您必须传递销售地址[0][0]
printArray(&sales[0][0], 5, 5);