2013-12-23 33 views
2

這是我在C++中的代碼。在函數原型中傳遞的2D數組

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

的主要方法之前,我宣佈這個函數的原型,然後朝我的代碼底部的主要方法之後定義它。但是,我收到一個錯誤,指出多維數組必須對所有維都有界限。我不明白我該如何解決這個問題。

+0

什麼是'maxNum'?它與數組維度有關嗎? – Jarod42

回答

3

如果您的二維數組將具有固定的列大小。你可以這樣做:

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); 
+0

我收到一個錯誤,表示在函數體外部使用參數'rows'和'col'。 – user2548635

+1

@ user2548635對不起,我犯了一個錯誤。我相應地編輯了我的答案。 –

1

你可以使用這個原型:

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

你必須提供的第二維陣列。否則,編譯器無法取消引用您的指針。這就是爲什麼你的編譯器產生錯誤

#define N 10 // just an exemple 

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