C++ không cho truyền toàn bộ mảng làm đối số hàm. Tuy nhiên, có thể truyền con trỏ đến mảng bằng cách chỉ tên mảng không kèm chỉ số. Có 3 cách truyền mảng 2D cho hàm:
1. Chỉ định kích thước cột
void processArr(int a[][10]) { /* ... */ }2. Truyền mảng chứa con trỏ
void processArr(int *a[10]) { /* ... */ }
// Khi gọi:
int *array[10];
for(int i = 0; i < 10; i++) array[i] = new int[10];
processArr(array);3. Truyền con trỏ tới con trỏ (pointer to pointer)
void processArr(int **a) { /* ... */ }
// Khi gọi:
int **array = new int*[10];
for(int i = 0; i < 10; i++) array[i] = new int[10];
processArr(array);Ví dụ hoàn chỉnh (cách 1)
#include <iostream>
using namespace std;
void processArr(int a[][2]) {
cout << "element at index 1,1 is " << a[1][1];
}
int main() {
int arr[2][2] = {{0,1},{2,3}};
processArr(arr);
return 0;
}Đầu ra
element at index 1,1 is 3