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:
#include <stdio.h> int 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ó app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.
Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack
Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.
Các bài học lập trình C phổ biến khác tại VietJack: