Ở những bài trước, chúng ta đã quen với việc khai báo từng biến riêng lẻ như int a, int b, int c… Bạn có thể tìm thấy hầu như trong tất cả các bài trước đều có biến riêng lẻ.
Mình sẽ để ngẫu nhiên 1 bài ở đây các bạn nếu chưa nhớ thì xem lại.
Bạn thử tưởng tượng xem: nếu cần lưu 100, 1.000 hay 10.000 số thì sao?
Như vậy chúng ta phải khai báo 100, 1.000 hay 10.000 biến hay sao?
Ví dụ: int a1,a2,a3,………….., a10000;
Nghe có vẻ chỉ là nhiều biến thôi nhưng thực tế nó gây ra rất nhiều vần đề nghiêm trọng như:
- Code dài, khó đọc, khó bảo trì : Khi số biến tăng lên file code dài hàng ngàn dòng, rất khó tìm lỗi, sửa lỗi và khó mở rộng.
- Xử lý thủ công : không thể tự động hóa, mọi thao tác phải viết bằng tay.
- Dễ sai sót, khó phát hiện lỗi : khi có nhiều biến dễ gõ sai tên biến, dễ quên biến, lỗi logic khó dò tìm.
- Tốn công sức của người lập trình : Thời gian viết code, Thời gian debug, Thời gian bảo trì về sau.
- Khó mở rộng và nâng cấp chương trình : khi bạn cần nhiều giá trị hơn thì phải khai báo thêm nhiều biến hơn, Phải sửa toàn bộ logic xử lý.
Chắc chắn việc khai báo từng biến một là không khả thi.
Và đó là lúc mảng trong C (Array in C) xuất hiện – một khái niệm cực kỳ quan trọng trong lập trình C.
Nội dung bài viết
Toggle1. Mảng trong C là gì?
Mảng là một tập hợp nhiều biến cùng kiểu dữ liệu, được lưu liền kề nhau trong bộ nhớ và được quản lý chung bằng một tên mảng duy nhất.
Hiểu một cách đơn giản : mảng giống như một dãy ngăn tủ mỗi ngăn chứa 1 giá trị.
2. Khai báo mảng trong C
Cú pháp:
kieu_du_lieu ten_mang[kich_thuoc]
ví dụ:
int mangA[5];
Trong đó:
- Tên mảng: mangA
- Kiểu dữ liệu: int
- Số phần tử: 5 (từ mangA[0] đến mangA[4])
Lưu ý: chỉ số của mảng luôn bắt đầu từ số 0
3. Gán giá trị cho mảng
Cách 1: Gán từng phần tử
Cách 2: Gán trực tiếp khi khai báo
int a[5] = {10, 20, 30, 40, 50};
Hoặc có thể viết gọn:
int a[] = {10, 20, 30, 40, 50};
👉 Trình biên dịch sẽ tự động xác định kích thước mảng.
4.Truy cập phần tử trong mảng
Muốn lấy giá trị trong mảng, ta dùng cú pháp:
ten_mang[chi_so]
Ví dụ:
printf(“%d”, a[2]);
Kết quả in ra sẽ là: 30
5. Duyệt mảng bằng vòng lặp
Trong thực tế, mảng luôn đi kèm vòng lặp, phổ biến nhất là for.
Ví dụ in toàn bộ phần tử của mảng:
Đây là kỹ năng bắt buộc phải nắm vững, vì 90% bài toán sau này đều làm việc với mảng + vòng lặp.
🔹 Ví dụ 1: In danh sách số chẵn
Bài toán
Lưu 5 số chẵn đầu tiên và in ra màn hình.
Kết quả: 2 4 6 8 10
🔹 Ví dụ 2: Tính tổng các phần tử trong mảng
Tình huống thực tế
Tính tổng tiền chi tiêu trong 5 ngày.
Kết quả: Tổng tiền = 1000
6. Lỗi thường gặp khi làm việc với mảng
❌ Truy cập ngoài phạm vi mảng:
a[5] = 100; // SAI
👉 Mảng a chỉ có chỉ số từ 0 đến 4.
⚠️ Lỗi này rất nguy hiểm vì:
- Chương trình có thể chạy sai
- Hoặc bị crash
- Hoặc cho kết quả không lường trước
🔹 Ví dụ 3: Lỗi “kinh điển” người mới hay gặp
int a[3] = {10, 20, 30};
printf(“%d”, a[3]); // SAI
❌ Vì mảng chỉ có:
- a[0]
- a[1]
- a[2]
📌 Lưu ý:
“Mảng có N phần tử thì chỉ số cao nhất là N – 1”
7. Tổng kết
Qua bài này, bạn cần nhớ:
✔ Mảng dùng để lưu nhiều giá trị cùng kiểu
✔ Chỉ số mảng bắt đầu từ 0
✔ Mảng thường được xử lý bằng vòng lặp
✔ Truy cập sai chỉ số có thể gây lỗi nghiêm trọng
👉 Ở bài tiếp theo, chúng ta sẽ đi sâu hơn vào mảng 1 chiều kết hợp với bài toán thực tế, giúp bạn hiểu mảng không chỉ là lý thuyết, mà là công cụ cực kỳ mạnh trong lập trình C.
Chúc các bạn học tập tốt.

