Giả sử mảng có 4 phần tử. Chỉ số mảng sẽ từ 0 đến 3, tức là truy cập từ chỉ số 0 đến 3.
Nhưng nếu dùng chỉ số lớn hơn 3, đó gọi là chỉ số vượt giới hạn (out of bounds).
Nếu dùng chỉ số vượt giới hạn, trình biên dịch vẫn biên dịch và chạy. Tuy nhiên, không đảm bảo kết quả đúng. Kết quả không xác định và gây nhiều vấn đề. Do đó, cần cẩn thận khi dùng chỉ số mảng.
Chương trình ví dụ
Chương trình C minh họa chỉ số vượt giới hạn:
#include<stdio.h> int main(void){ int std[4]; int i; std[0] = 100; //hợp lệ std[1] = 200; //hợp lệ std[2] = 300; //hợp lệ std[3] = 400; //hợp lệ std[4] = 500; //không hợp lệ (vượt giới hạn) //in tất cả phần tử for( i=0; i<5; i++ ) printf("std[%d]: %d\n",i,std[i]); return 0; }
Kết quả
std[0]: 100 std[1]: 200 std[2]: 300 std[3]: 400 std[4]: 2314
Giải thích
Kích thước mảng là 4, chỉ số hợp lệ từ std[0] đến std[3]. Chương trình gán giá trị 500 cho std[4]. Biên dịch và chạy thành công, nhưng khi in ra, std[4] cho giá trị rác (2314) thay vì 500.