Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Truyền mảng hai chiều cho hàm trong C++


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