Mảng trong C/C++ là một cấu trúc dữ liệu quan trọng trong ngôn ngữ lập trình C/C++. Nó cho phép lưu trữ một tập hợp tuần tự các phần tử cùng kiểu, với độ dài cố định. Mảng được sử dụng để lưu trữ tập hợp dữ liệu và cũng rất hữu ích khi lưu trữ một tập hợp biến có cùng kiểu.
Thay vì sử dụng nhiều biến riêng lẻ, ví dụ như bien1
, bien2
, bien3
,..., bien99
, chúng ta có thể sử dụng một mảng các giá trị như bien[0]
, bien[1]
, bien[2]
,..., bien[99]
để biểu diễn các giá trị riêng biệt. Mỗi phần tử trong mảng được truy cập thông qua chỉ số.
Tất cả các phần tử trong mảng được lưu trữ tại các vị trí nhớ liền kề nhau. Địa chỉ thấp nhất tương ứng với phần tử đầu tiên và địa chỉ cao nhất tương ứng với phần tử cuối cùng của mảng.
Tại sao cần sử dụng mảng?
Khi có một số lượng nhỏ các đối tượng, chúng ta có thể sử dụng các biến riêng lẻ (biến1
, biến2
, biến3
,...) để lưu trữ. Tuy nhiên, nếu muốn lưu trữ nhiều trường hợp, việc quản lý chúng trở nên khó khăn hơn. Mảng ra đời để biểu diễn nhiều trường hợp sử dụng một biến.
Ưu điểm:
- Tối ưu hóa code: Bạn có thể trích xuất hoặc phân loại dữ liệu hiệu quả.
- Truy cập ngẫu nhiên: Lấy dữ liệu nằm ở một vị trí chỉ định.
Nhược điểm:
- Giới hạn kích thước: Chỉ có thể lưu trữ kích thước cố định của các phần tử trong mảng. Mảng không mở rộng kích thước ở thời gian chạy.
Mảng và Con trỏ
Mảng và con trỏ là hai khái niệm khác nhau trong lập trình C/C++. Sự nhầm lẫn thường xảy ra do tên mảng chỉ địa chỉ của phần tử đầu tiên và mảng thường được chuyển dưới dạng con trỏ (ngay cả khi dùng dấu ngoặc vuông). Vì vậy, hãy lưu ý trước khi sử dụng mảng và con trỏ trong lập trình C/C++.
Khai báo mảng trong C/C++
Để khai báo một mảng trong ngôn ngữ C/C++, bạn cần xác định kiểu dữ liệu của các phần tử và số lượng phần tử được yêu cầu bởi biến đó. Cú pháp khai báo mảng một chiều trong C/C++ như sau:
Kieu_Du_Lieu Ten_Mang[Kich_Co_Mang];
Đây là ví dụ về khai báo một mảng balance
với 10 phần tử có kiểu double
:
double balance[10];
Khởi tạo mảng trong C/C++
Bạn có thể khởi tạo mảng trong C/C++ theo từng phần tử hoặc sử dụng một câu lệnh khởi tạo. Dưới đây là ví dụ về khởi tạo mảng balance
với 5 giá trị đã biết:
int balance[5] = {15, 20, 25, 30, 35};
Số lượng giá trị trong cặp dấu ngoặc nhọn {}
không được lớn hơn số lượng phần tử được khai báo trong cặp dấu ngoặc vuông []
.
Nếu không khai báo kích thước mảng, mảng sẽ có đủ kích thước để chứa các giá trị được khởi tạo. Ví dụ:
int balance[] = {15, 20, 25, 30, 35};
Bạn có thể tạo ra một mảng tương tự như ví dụ trước đó.
Truy cập các phần tử mảng trong C/C++
Một mảng được truy cập thông qua chỉ số của phần tử trong tên mảng. Dưới đây là cách truy cập một giá trị của mảng:
int hocphi = hocphik60[55];
Câu lệnh trên lấy giá trị của phần tử thứ 56 trong mảng hocphik60
và gán giá trị này cho biến hocphi
.
Ví dụ sau đây minh họa việc sử dụng mảng và con trỏ trong C/C++:
#include
using namespace std;
int main() {
int n[10];
for (int i = 0; i 10; i++) {
n[i] = i + 100;
}
cout "Phan tu thu:" setw(13) "Gia tri la:" endl;
for (int j = 0; j 10; j++) {
cout setw(7) j setw(13) n[j] endl;
}
return 0;
}
Kết quả khi chạy chương trình sẽ như sau:
Phan tu thu: Gia tri la:
0 100
1 101
2 102
3 103
4 104
5 105
6 106
7 107
8 108
9 109
Chi tiết về mảng trong C/C++
Mảng là một khái niệm quan trọng trong ngôn ngữ C/C++. Dưới đây là những định nghĩa quan trọng liên quan đến mảng trong C/C++:
-
Mảng đa chiều trong C/C++: C/C++ hỗ trợ các mảng đa chiều. Mẫu đơn giản nhất của mảng này là mảng hai chiều.
-
Con trỏ tới một mảng trong C/C++: Bạn có thể trỏ tới phần tử đầu tiên của mảng một cách đơn giản bằng cách xác định tên mảng đó, chứ không phải là một chỉ số.
-
Truyền mảng như là tham số của hàm trong C/C++: Bạn có thể truyền vào một điểm trỏ chỉ tới một mảng bằng cách xác định tên mảng đó, chứ không phải là một chỉ số.
-
Trả về mảng từ hàm trong C/C++: C/C++ cho phép một hàm có thể trả về một mảng.
Mảng đa chiều trong C++
C/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[kich_co_1][kich_co_2]...[kich_co_N];
Ví dụ, khai báo sau tạo một mảng số nguyên 3 chiều có kích thước 5x10x4:
int hocphi[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ảng hai chiều về bản chất là danh sách các mảng một chiều. Để khai báo một mảng hai chiều kiểu integer
với kích cỡ x
hàng và y
cột, bạn có thể viết như sau:
kieu_du_lieu ten_mang[x][y];
Một mảng hai chiều có thể được hiển thị như một bảng với x
hàng và y
cột. Dưới đây là một ví dụ về mảng hai chiều:
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ử của mảng hai chiều được truy cập bằng cách sử dụng các chỉ số hàng và chỉ số cột. Ví dụ:
int val = 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.