C/C 中的零长度数组:一个令人费解的错误
虽然定义大小为零的数组可能看起来无害,但它可能会导致C/C 中出现意想不到的后果。根据 ISO C 标准 (9899:2011 6.7.6.2),数组的大小必须大于零。
此限制适用于普通数组和可变长度数组 (VLA)。对于 VLA,确定数组大小的表达式的值必须大于或等于 1。如果此表达式的计算结果为零或负数,则行为未定义。
尽管有这个明确的要求,但某些编译器(例如 GCC)在定义零长度数组时不会抱怨。这可能是由于对遗留代码的支持尚未更新为使用带有方括号 ([]) 的较新数组语法。但是,必须了解定义零长度数组是错误的。
定义这样的数组不会产生有效的数据结构。尝试以任何方式使用该数组都将导致未定义的行为和潜在的崩溃。确保您的代码始终定义具有有效的正大小的数组至关重要。
以上是为什么零长度数组在 C/C 中会出现问题?的详细内容。更多信息请关注PHP中文网其他相关文章!