【C语言初阶】数组越界
三、数组越界
通过下标访问数组是有范围限制的。C编译器不会检查数组下标是否正确。
数组下标从0开始索引,如果有一个数组有 n
个元素,那么数组下标的范围是 0 ~ n-1
。
所以当下标的值小于0或者大于 n
,此时再通过下标访问就是数组越界访问了,即超出了合法的数组空间进行访问。
而C语言本身不会进行数组下标的越界检查,使用的编译器也不一定报错,但这并不一定说明程序就是正确的。所以在编写代码的时候,一定要做好数组下标的越界检查。
1 简单示例
代码示例:
#include<stdio.h>
int main()
{
//数组越界
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int i = 0;
for (i = 0; i <= 10; i++)//数组下标:0~10
{
printf("%d\n", arr[i]);
//索引“10”超出了“0”至“9”的有效范围(对于可能在堆栈中分配的缓冲区“arr”
}
return 0;
}
解释说明:
1 当 i
增长到10的时候,此时通过下标访问数组元素非法,arr[10]
就是数组的越界访问。
2 此时 &arr[10]
并非数组开辟的空间,访问非法,arr[10]
的值为随机值:
总结:
本节介绍了什么是数组越界;在使用数组时要注意数组下标的越界检查。
感谢您的阅读!如有任何错误,欢迎您的批评指正!