Giả sử bạn có một mảng có bốn phần tử. Sau đó, lập chỉ mục mảng sẽ từ 0 đến 3, tức là chúng ta có thể truy cập các phần tử từ chỉ mục 0 đến 3.
Tuy nhiên, nếu chúng tôi sử dụng chỉ mục lớn hơn 3, nó sẽ được gọi là chỉ mục nằm ngoài giới hạn.
Nếu, chúng tôi sử dụng một chỉ mục mảng nằm ngoài giới hạn, thì trình biên dịch sẽ biên dịch và thậm chí chạy. Tuy nhiên, không có gì đảm bảo cho kết quả chính xác.
Kết quả có thể không chắc chắn và nó sẽ bắt đầu gây ra nhiều vấn đề. Do đó, chúng tôi khuyên bạn nên cẩn thận khi sử dụng lập chỉ mục mảng.
Chương trình mẫu
Sau đây là chương trình C cho một chỉ mục nằm ngoài giới hạn trong một mảng -
#include<stdio.h> int main(void){ int std[4]; int i; std[0] = 100; //valid std[1] = 200; //valid std[2] = 300; //valid std[3] = 400; //valid std[4] = 500; //invalid(out of bounds index) //printing all elements for( i=0; i<5; i++ ) printf("std[%d]: %d\n",i,std[i]); return 0; }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
std[0]: 100 std[1]: 200 std[2]: 300 std[3]: 400 std[4]: 2314
Giải thích
Trong chương trình này, kích thước mảng là 4, vì vậy chỉ số mảng sẽ từ std [0] đến std [3]. Tuy nhiên, ở đây, chúng tôi đã gán giá trị 500 cho std [4].
Do đó, chương trình được biên dịch và thực thi thành công. Tuy nhiên, trong khi in giá trị, giá trị của std [4] là rác. Chúng tôi đã chỉ định 500 trong đó và kết quả là 2314.