抱歉,如果这是一个菜鸟问题:(。
一段C代码。
int array[5];
int cnt;
for(cnt = 0; cnt <= 10; cnt+=1)
{
array[cnt] = cnt;
}
应该会报错吧?不!工作正常!
但这是为什么呢?看起来 - 在第一行 - 定义了一个大于双倍大小 (11) 的数组。您甚至可以稍后访问 array[5 到 10]。这让我很困惑。当您定义 array[4 或更少] 时它会停止工作...
提前致谢。
它可能恰好适用于您的特定编译器和计算机,但您不应该指望它。
根据 C 语言规范,代码的行为是不明确的。这意味着它可能会执行您希望的操作,或者可能导致您的计算机崩溃,或者可能导致恶魔从你的鼻子里飞出来 http://catb.org/jargon/html/N/nasal-demons.html.
与 Java 和 C# 等高级语言不同,C 信任您并且不会对数组的边界执行显式检查。你应该负责,不要超出阵列的边界。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)