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

Khởi tạo mảng đa chiều trong C/C++

Khi khai báo mảng đa chiều trong C/C++, kích thước của chiều đầu tiên (bên trái nhất) có thể để trống, nhưng tất cả các chiều còn lại phải được chỉ định rõ ràng.

Ví dụ

#include <stdio.h>

int main() {
    // Khai báo mảng 2 chiều, để trống chiều đầu, chiều 2 = 2
    int a[][2] = {{1,2}, {3,4}};
    
    // In kích thước toàn bộ mảng (byte)
    printf("%lu", sizeof(a)); // Kết quả: 16 (4 phần tử int x 4 byte)
    
    getchar();
    return 0;
}

Đầu ra

16

Giải thích

  • Mảng a có 2 hàng (tự động suy ra từ danh sách khởi tạo) và 2 cột (khai báo rõ).
  • Tổng cộng 4 phần tử int. Trên hệ 32/64-bit thường sizeof(int) = 4 byte → 4 * 4 = 16 byte.
  • Cú pháp tương tự cho mảng 3 chiều: int b[][3][4] = { ... }; (chỉ để trống chiều đầu).

Ứng dụng thực tế

Kỹ thuật này thường dùng khi truyền mảng đa chiều vào hàm, nơi tham số hàm chỉ cần khai báo các chiều từ thứ 2 trở đi:

void process(int arr[][10], int rows); // Hợp lệ
// void process(int arr[][][10], int rows, int cols); // Sai - thiếu chiều 2