在 C/C++ 中超出邊界的訪問陣列
在諸如 Java 的語言中,如果越界訪問陣列,可能會發生這樣的異常 java.lang.ArrayIndexOutOfBoundsException。但在 C 中,沒有這樣的功能,如果越界訪問陣列可能會發生未定義的行為。
下面給出了在 C 中演示這一現象的程式。
示例
#include <stdio.h> int main() { int arr[] = {1,2,3,4,5}; printf("The elements of array : "); for(int i = 0; i<6; i++) printf(" %d",arr[i]); return 0; }
輸出
上面程式的輸出如下。
The elements of array : 1 2 3 4 5 32765
現在我們來理解上面的程式。
arr 陣列僅至下標 4 分配了值。因此,當列印陣列元素時,arr[5] 將導致垃圾值。顯示這一點的程式碼片段如下。
int arr[] = {1,2,3,4,5}; printf("The elements of array : "); for(int i = 0; i<6; i++) printf(" %d",arr[i]);
廣告