Khai báo
Ta biết mỗi phần tử của 1 mảng có kiểu dữ liệu bất kỳ. Khi các phần tử của mảng là 1 mảng thì ta có mảng 2 chiều.
Khai báo mảng 2 chiều theo cú pháp
kieu_du_lieu ten_mang [so_hang][so_cot];
Ví dụ
int arr[3][4]; //Mảng arr có 3 hàng 4 cột
Các phần tử trong mảng 2 chiều có n hàng, m cột
cột 0 côt 1 cột 2 ... cột m - 1 [0][0] [0][1] [0][2] ... [0][m-1] // hàng 0 [1][0] [1][1] [1][2] ... [1][m-1] // hàng 1 [2][0] [2][1] [2][2] ... [2][m-1] // hàng 2 ..... [n-1][0] [n-1][1] [n-1][2] ... [n-11][m-1] // hàng n-1
Khởi tạo giá trị cho mảng 2 chiều.
Các phần tử của mỗi hàng được đặt trong dấu {}
Số phần tử của 1 hàng tương ứng với số cột.
Các hàng ngăn cách nhau bằng dấu phẩy.
Ví dụ:
int array[3][5] = { { 1, 2, 3, 4, 5 }, // Hàng 0 { 6, 7, 8, 9, 10 }, // Hàng 1 { 11, 12, 13, 14, 15 } // Hàng 2 };
Hoặc
int array[3][5] = { { 1, 2 }, // Hàng 0 = 1, 2, 0, 0, 0 { 6, 7, 8 }, // Hàng 1 = 6, 7, 8, 0, 0 { 11, 12, 13, 14 } // Hàng 2 = 11, 12, 13, 14, 0 };
Truy cập các phần từ của mảng 2 chiều
Để duyệt và truy cập các phần tử của mảng 2 chiểu ta dùng vòng lặp.
Ví dụ
#include <iostream> using namespace std; int main() { const int rows = 3; const int columns = 5; int array[rows][columns] = { { 1, 2, 3, 4, 5 }, // row 0 { 6, 7, 8, 9, 10 }, // row 1 { 11, 12, 13, 14, 15 } // row 2 }; for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { cout << array[i][j] << " "; } cout << endl; } return 0; }
Kết quả
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Truyền mảng 2 chiều vào hàm
Để truyền mảng 2 chiều vào hàm, parameter của hàm phải khai báo tường minh số cột của ma trận
Ví dụ
void Print (int arr[][5], int rows, int cols) { //TODO }
Hoặc
void Print (int (*arr)[5], int rows, int cols) { //TODO }
Ví dụ trên hàm Print có thể truyền vào mảng 2 chiều có số cột là 5. Nếu ta truyền mảng 2 chiều có số cột khác 5 chương trình sẽ báo lỗi.
Ví dụ
#include <iostream> using namespace std; void Print(int arr[][5], int rows, int cols) { for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { cout << arr[i][j] << " "; } cout << endl; } } int main() { const int rows = 3; const int columns = 5; int array[rows][columns] = { { 1, 2, 3, 4, 5 }, // row 0 { 6, 7, 8, 9, 10 }, // row 1 { 11, 12, 13, 14, 15 } // row 2 }; Print(array, rows, columns); return 0; }
Kết quả
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Chú ý:
Ví dụ trên int (*arr)[5] sẽ khác với int* arr[5];
void Print (int* arr[5], int rows, int cols) { //TODO } int arr[3][5]; Print (arr); // Error
Leave A Comment?