C語言中什麼是陣列越界索引?


假設您有一個包含四個元素的陣列。那麼,陣列索引將從 0 到 3,即我們可以訪問索引 0 到 3 的元素。

但是,如果我們使用大於 3 的索引,則稱為陣列越界索引。

如果我們使用超出範圍的陣列索引,則編譯器將編譯甚至執行。但是,不能保證結果的正確性。

結果可能不確定,並且會開始導致許多問題。因此,建議在使用陣列索引時要小心。

示例程式

以下是陣列中超出範圍索引的 C 程式:

 線上演示

#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
",i,std[i]);    return 0; }

輸出

當執行上述程式時,會產生以下結果:

std[0]: 100
std[1]: 200
std[2]: 300
std[3]: 400
std[4]: 2314

解釋

在這個程式中,陣列大小為 4,所以陣列索引將從 std[0] 到 std[3]。但是,這裡我們將值 500 賦給了 std[4]。

因此,程式成功編譯並執行。但是,在列印值時,std[4] 的值為垃圾資料。我們為其分配了 500,結果為 2314。

更新於: 2021年3月9日

2K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.