Cant 将 2D 数组传递给函数 C++



我一直在关注这个主题的网络教程,但是我有以下情况:

我有一个签名如下的函数:

void func(long& rows, long& columns, int array[][columns]);

,我试着像这样使用函数:

int matrix[5][4] = {0,  -1,  2,  -3,
4,  -5,  6,  -7,
8,  -9,  10, -11,
12, -13, 14, -15,
16, -17, 18, -19};
long rows = 5;
long columns = 4;
func(rows, columns, matrix);
^--- 'No matching function for call to 'func''

有什么问题吗?为什么它不能调用函数?

可变长度数组不是标准的c++特性。

你可以用下面的方式声明函数和数组

const size_t columns = 4;
void func( size_t rows, const int array[][columns]);
//...

int matrix[][columns] = { {  0,  -1,   2,  -3 },
{  4,  -5,   6,  -7 },
{  8,  -9,  10, -11 },
{ 12, -13,  14, -15 },
{ 16, -17,  18, -19 } };
func( sizeof( matrix ) / sizeof( *matrix ),  matrix);
//...
void func( size_t rows, const int array[][columns] )
{
std::cout << rows << columns << array[0][1];
}

请注意,由于列数是已知的,因此将其传递给函数没有意义。此外,通过引用传递行数和列数是没有意义的。

您是否在程序中实际定义了func?下面的源代码对我来说可以正常编译和工作

#include <iostream>
#define ROW 5
#define COLUMN 4
void func(long &rows, long &columns, int array[][COLUMN]);
int main()
{
int matrix[ROW][COLUMN] = {0, -1, 2, -3,
4, -5, 6, -7,
8, -9, 10, -11,
12, -13, 14, -15,
16, -17, 18, -19};
long rows = 5;
long columns = 4;
func(rows, columns, matrix);
return 0;
}
void func(long &rows, long &columns, int array[][COLUMN])
{
std::cout << rows << columns << array[0][1];
}

相关内容

  • 没有找到相关文章

最新更新