数组溢出与预防
在C语言中,数组的元素下标是从0开始计算的,所以,对于n个元素的数组a[n], 遍历它的时候是a[0],a[1],...,a[n-1],如果遍历到a[n],数组就溢出了。
void print_array(int a[], int n)
{
for (int i = 0; i < n; i++)
{
a[i] = a[i+1];//当i
= n-1时,就发生了数组越界
printf(“%d\n”, a[i]);
}
}
上面的循环判断应该改为:
for (int i = 0; i < n-1; i++)
void print_array(int (&a)[10])
{
for(int i=0;i<10;i++)
{
printf(“%d\n”,a[i]);
}
}
int main(void)
{
int a[9]={0};
printf_array(a);//无法通过,编译错误
}