Computer >> Máy Tính >  >> Lập trình >> lập trình C

Chỉ mục nằm ngoài giới hạn trong một mảng - ngôn ngữ C là gì?

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.