在函数原型中传递的2D数组

时间:2013-12-23 03:16:39

标签: c++

这是我在c ++中的代码。

void multTable(int arr[][], int maxNum);

在main方法之前,我声明了这个函数原型,然后在我的代码底部的main方法之后定义它。但是,我收到一条错误,指出多维数组必须包含所有维度的边界。我不明白如何解决这个问题。

3 个答案:

答案 0 :(得分:3)

如果您的2D阵列具有固定的列大小。你可以这样做:

void multTable(int arr[][MAX_COLS], int maxNum);

你必须这样称呼它:

#define MAX_ROWS (5)
#define MAX_COLS (7)

int arr[MAX_ROWS][MAX_COLS] = {...};
multTable(arr, 7);

答案 1 :(得分:1)

您可以使用此原型:

template <int ROW, int COLUMN>
void multTable(int (&arr)[ROW][COLUMN], int maxNum);

答案 2 :(得分:1)

您必须提供数组的第二个维度。否则编译器无法取消引用您的指针。这就是你的编译器生成错误的原因

#define N 10 // just an exemple

void multTable(int arr[][N], int maxNum); // N is the 2nd dimention