Mảng đa chiều trong C
Ngôn ngữ C hỗ trợ các mảng đa chiều. Dưới đây là mẫu chung của một khai báo mảng đa chiều:
kieu_du_lieu ten_mang[kichco_1][kichco_2]...[kichco_N];
Ví dụ, khai báo sau tạo một mảng số nguyên 3 chiều: 5. 10. 4:
int mangbachieu[5][10][4];
Mảng hai chiều trong C
Mẫu đơn giản nhất của mảng đa chiều là mảng hai chiều. Một mảng hai chiều về bản chất là danh sách của các mảng một chiều. Để khai báo một mảng hai chiều integer với kích cỡ x, y, bạn nên viết như sau:
kieu_du_lieu ten_mang [ x ][ y ];
Ở đây, kieu_du_lieu có thể là bất kỳ kiểu dữ liệu có hiệu lực nào và ten_mang sẽ là một định danh C có hiệu lực. Một mảng hai chiều có thể như là một bảng mà có x hàng và y cột. Một mảng hai chiều a chứa 3 hàng và 4 cột có thể được hiển thị như sau:
Như vậy, mỗi phần tử trong mảng a được định danh bởi một tên phần tử trong kiểu mẫu a[ i ][ j ], với a là tên mảng và i, j là các subscript – chỉ số được xác định duy nhất mỗi phần tử trong a.
Khởi tạo mảng hai chiều trong C
Các mảng đa chiều có thể được khởi tạo bởi xác định các giá trị trong dấu móc vuông cho mỗi hàng. Sau đây là một hàng với 3 hàng và mỗi hàng chứa 4 cột.
int a[3][4] = { {0, 1, 2, 3} , /* khoi tao cho hang co chi muc la 0 */ {4, 5, 6, 7} , /* khoi tao cho hang co chi muc la 1 */ {8, 9, 10, 11} /* khoi tao cho hang co chi muc la 2 */ };
Các dấu ngoặc ôm, mà chỉ các hàng giá trị là tùy ý. Khởi tạo sau là tương đương với ví dụ trên:
int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
Truy cập các phần tử của mảng hai chiều trong C
Các phần tử mảng hai chiều được truy cập bởi sử dụng các chỉ số, ví dụ chỉ số hàng và chỉ số cột. Ví dụ:
int ten_bien = a[2][3];
Lệnh trên sẽ truy cập vào phần tử thứ 4 từ hàng thứ 3 của mảng. Bạn có thể kiểm tra lại nó trong sơ đồ trên. Bây giờ chúng ta xem xét ví dụ dưới đây, chúng tôi đã sử dụng các vòng lặp lồng vào nhau để xử lý một mảng hai chiều:
#includeint main () { /* mang sau co 5 hang va 2 cot */ int a[5][2] = { {0,0}, {1,2}, {2,4}, {3,6},{4,8}}; int i, j; /* hien thi gia tri cac phan tu trong mang */ for ( i = 0; i < 5; i++ ) { for ( j = 0; j < 2; j++ ) { printf("Gia tri cua a[%d][%d] = %d\n", i,j, a[i][j] ); } } printf("\n===========================\n"); printf("VietJack chuc cac ban hoc tot! \n"); return 0; }
Biên dịch và chạy chương trình C trên sẽ cho kết quả:
Như phần trên đã giải thích, bạn có thể có các mảng với số chiều bất kỳ, nhưng hầu hết các mảng bạn tạo ra sẽ là một hoặc hai chiều.
Các bài học lập trình C phổ biến khác tại VietJack: