Mảng là gì
Có thể
bạn sẽ gặp khó khăn khi lưu trữ một tập hợp các phần tử dữ liệu giống nhau
trong các biến khác nhau. Ví dụ, điểm cho tất cả 11 cầu thủ của một đội bóng đá
phải được ghi nhận trong một trận đấu. Sự lưu trữ điểm của mỗi cầu thủ trong
các biến có tên khác nhau thì chắc chắn phiền hà hơn dùng một biến chung cho
chúng. Với mảng mọi việc sẽ được thực hiện đơn giản hơn. Một mảng là một
tập hợp các phần tử dữ liệu có cùng kiểu. Mỗi phần tử được lưu trữ ở các vị trí
kế tiếp nhau trong bộ nhớ chính. Những phần tử này được gọi là phần tử mảng.
Các
phần tử mảng và các chỉ mục
Mỗi phần
tử của mảng được định danh bằng một chỉ mục hoặc chỉ số gán cho
nó. Chiều của mảng được xác định bằng số chỉ số cần thiết để định danh
duy nhất mỗi phần tử. Một chỉ số là một số nguyên dương được bao bằng dấu ngoặc
vuông [ ] đặt ngay sau tên mảng, không có khoảng trắng ở giữa. Một chỉ
số chứa các giá trị nguyên bắt đầu bằng 0. Vì vậy, một mảng player với
11 phần tử được biểu diễn như sau:
player[0], player[1], player[2], ... ,
player[10].
Như đã
thấy, phần tử mảng bắt đầu với player[0], và vì vậy phần tử cuối cùng là
player[10] không phải là player[11]. Điều này là do bởi trong C, chỉ số mảng bắt
đầu từ 0; do đó trong mảng N phần tử, phần tử cuối cùng có chỉ số là N-1.
Phạm vi cho phép của các giá trị chỉ số được gọi là miền giới hạn của chỉ
số mảng, giới hạn dưới và giới hạn trên. Một chỉ số mảng hợp lệ
phải có một giá trị nguyên nằm trong niềm giới hạn. Thuật ngữ hợp lệ được
sử dụng cho một nguyên nhân rất đặc trưng. Trong C, nếu người dùng cố gắng truy
xuất một phần tử nằm ngoài dãy chỉ số hợp lệ (như player[11] trong ví dụ trên của
mảng), trình biên dịch C sẽ không phát sinh ra lỗi. Tuy nhiên, có thể nó truy
xuất một giá trị nào đó dẫn đến kết quả không đoán được. Cũng có nguy cơ viết
chồng lên dữ liệu hoặc mã lệnh chương trình. Vì vậy, người lập trình phải đảm bảo
rằng tất cả các chỉ số là nằm trong miền giới hạn hợp lệ.
Khai
báo một mảng
Một mảng
có một vài đặc tính riêng biệt và phải được khai báo khi sử dụng chúng. Những đặc
tính này bao gồm:
Kiểu
dữ liệu của các phần tử
mảng.
Tên
mảng – xác định vị trí
phần tử đầu tiên của mảng.
Kích
thước mảng - một hằng
số có giá trị nguyên dương.
Một mảng
được khai báo giống như cách khai báo một biến, ngoại trừ tên mảng được theo
sau bởi một hoặc nhiều biểu thức, được đặt trong dấu ngoặc vuông [] xác định
chiều dài của mảng. Cú pháp tổng quát khai báo một mảng như sau:
kiểu_dữ_liệu
tên_mảng[biểu_thức_kích_thước]
Ở đây, biểu_thức_kích_thước
là một biểu thức xác định số phần tử trong mảng và phải định ra một trị nguyên
dương. Lớp_lưu_trữ là một tùy chọn. Mặc định lớp automatic được dùng
cho mảng khai báo bên trong một hàm hoặc một khối lệnh, và lớp external
được dùng cho mảng khai báo bên ngoài một hàm. Vì vậy mảng player được
khai báo như sau:
int
player[11];
Nên nhớ
rằng, trong khi khai báo mảng, kích thước của mảng sẽ là 11, tuy nhiên các chỉ
số của từng phần tử bên trong mảng sẽ là từ 0 đến 10.
Các qui
tắc đặt tên mảng là giống với qui tắc đặt tên biến. Một tên mảng và một tên
biến không được giống nhau, nó dẫn đến sự nhập nhằng. Nếu một sự khai báo
như vậy xuất hiện trong chương trình, trình biên dịch sẽ hiển thị thông báo lỗi.
Một
vài qui tắc với mảng:
Tất cả
các phần tử của một mảng có cùng kiểu. Điều này có nghĩa là, nếu một mảng được
khai báo kiểu int, nó không thể chứa các phần tử có kiểu khác.
Mỗi phần
tử của mảng có thể được sử dụng bất cứ nơi nào mà một biến được cho phép hay được
yêu cầu.
Một phần
tử của mảng có thể được tham chiếu đến bằng cách sử dụng một biến hoặc một biểu
thức nguyên. Sau đây là các tham chiếu hợp lệ:
player[i];
/*Ở đó i là một biến, tuy nhiên cần phải chú ý rằng i nằm trong
miền giới hạn của chỉ số đã được khai báo cho mảng player*/
player[3]
= player[2] + 5;
player[0]
+= 2;
player[i
/ 2 + 1];
Kiểu dữ
liệu của mảng có thể là int, char, float, hoặc double.
Đăng nhận xét