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

Truyền mảng 2D vào hàm C++

Khi truyền mảng 2D vào hàm, chiều thứ hai (số cột) phải được chỉ định trong tham số hàm, chiều đầu tiên có thể bỏ trống.

Cú pháp

void func(int arr[][COLS], int rows); // hoặc int (*arr)[COLS]

Ví dụ mã

#include <iostream>
using namespace std;

void show(int n[][3], int rows) {
    cout << "Các giá trị:\n";
    for (int i = 0; i < rows; ++i) {
        for (int j = 0; j < 3; ++j)
            cout << n[i][j] << ' ';
        cout << '\n';
    }
}

int main() {
    int n[4][3] = {
        {3, 4, 2},
        {9, 5, 1},
        {7, 6, 2},
        {4, 8, 1}
    };
    show(n, 4);
    return 0;
}

Kết quả

Các giá trị:
3 4 2
9 5 1
7 6 2
4 8 1

Lưu ý: Không thể truyền int** cho mảng 2D tĩnh (int a[4][3]) vì bố trí bộ nhớ khác nhau (liên tục vs con trỏ đến con trỏ). Dùng vector<vector<int>> cho linh hoạt hơn.