【发布时间】:2017-11-30 00:52:45
【问题描述】:
我正在尝试用从用户那里获得的数字填充我的 int 数组。
但是当我尝试printf 一个更大的特定索引时,它显示错误的数字。
for(B_index=0,checker=0; B_index<SIZE&&!checker; B_index++)
{
checker=scanf("%d",&B[B_index]);
if(checker==EOF)
{
checker=1;
}
else if(checker<1)
{
printf("error");
return 1;
}
}
printf("%d",B[1]);
【问题讨论】:
-
这是因为 C 数组不进行边界检查,即编译器不检查对数组中元素的访问是否超出数组的边界。为什么?两个原因: 1. C 数组在运行时转换为指针,因此每次访问数组中的元素就像在做指针运算。 2. 因为它为语言提供了更快的速度,所以需要在可靠性和速度之间进行权衡。