我在C编程方面遇到了奇怪的经历。考虑以下代码:
int main(){
int array1[6] = {0, 1, 2, 3, 4, 5};
int array2[6] = {6, 7, 8, 9, 10, 11};
printf("%d\n", array1[-1]);
return 0;
}
编译并运行此程序时,没有任何错误或警告。正如我的讲师所说,数组索引-1
访问另一个变量。我仍然很困惑,为什么编程语言具有这种能力?我的意思是,为什么要允许使用负数组索引?
-1
数组,并且引用子数组的元素是在较大数组中引用该数组之前的元素的一种完全有效的方法。另一个是如果索引无效,则该程序无效,但是在大多数实现中,您将获得无声的不良行为,而不是超出范围的错误。