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。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP