在 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]);

更新於:26-6月-2020

1K+ 次瀏覽

開啟您的 職業生涯

完成課程獲得認證

立即開始
廣告