Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Chỉ số vượt giới hạn mảng (out of bounds) trong C


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.