我知道使用负索引纯粹是运气。但出于好奇我尝试了这个。我知道你可以声明 array[0];就像 malloc(0) 一样;是合法的。但是我为什么可以在 array[0] 中存储一个值呢?
#include <stdio.h>
#include <conio.h>
int main(void)
{
int i;
int array[0];
array[0] = 5;
printf("%d\n",array[0]);
getch();
}
Such a 0
大小数组是标准 C 中的约束违规,编译器不应该让您在没有给出诊断信息的情况下逃脱这一处罚。如果它没有告诉您一些信息,那么这一定是您的编译器供应商已添加到其 C 方言中的扩展。
不要依赖此类扩展。
无论您是否声明数组的大小0
,C 没有强制对数组或指针访问进行边界检查。不过,如果在编译时已知超出范围,一个好的现代编译器仍然应该向您发出警告。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)