您可以将动态大小的可变长度数组初始化为零吗?

时间:2018-06-26 07:42:31

标签: c arrays initialization c11 zero-initialization

21st Century C Tips From the New School书中。在第171页上,

  

现在可悲的是:假设您有一个可变长度数组(即,其长度由运行时变量设置的数组)。将其归零的唯一方法是通过memset

int main(){
  int length=20;
  int ll[length];
  memset(ll, 0, 20*sizeof(int));
}
     

就这样。 1。

该部分的脚注为

  
      
  1. 您可以为此归咎于ISO C标准§6.7.8(3),因为它坚持认为不能初始化可变长度数组。我说编译器应该可以解决这个问题。
  2.   

尽管在seminal answers on this matter on StackOverflow中似乎没有任何暗示,但我没有看到任何提及,

int main(){
  int length=20;
  int ll[length] = {0};
}

这是对ISO C 2011标准的正确阅读吗?

0 个答案:

没有答案