在 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+ 次浏览

开启您的 职业生涯

完成课程获得认证

立即开始
广告
© . All rights reserved.