在新学校的 21 世纪 C 提示一书中。在第 171 页上,它说,
现在是可悲的部分:假设您有一个可变长度数组(即,其长度由运行时变量设置)。将其归零的唯一方法是通过
memset
:int main(){ int length=20; int ll[length]; memset(ll, 0, 20*sizeof(int)); }
就这样。1.
该部分的脚注如下:
- 您可以为此责备 ISO C 标准 §6.7.8(3),因为它坚持不能初始化可变长度数组。我说编译器应该能够解决它。
尽管在StackOverflow 上有关此问题的开创性答案中,我没有在任何地方看到这一点,这似乎表明这会起作用,
int main(){
int length=20;
int ll[length] = {0};
}
这是对 ISO C 2011 标准的正确解读吗?