在 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]);
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
安卓
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP