Можете ли вы инициализировать массив переменной длины с динамическим размером нулю?

В книге 21-й век C Советы из новой школы. На странице 171 написано:

Теперь о грустной части: допустим, у вас есть массив переменной длины (т. Е. Тот, чья длина установлена ​​переменной времени выполнения). Единственный способ обнулить это через memset:

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

Такие вот дела. 1.

Сноска для этого раздела гласит:

  1. Вы можете обвинить стандарт ISO C §6.7.8(3) в этом, потому что он настаивает на том, что массивы переменной длины не могут быть инициализированы. Я говорю, что компилятор должен быть в состоянии решить это.

Я не вижу нигде упомянутого, хотя в оригинальных ответах по этому вопросу на Stackru, которые, кажется, предполагают, что это будет работать,

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

Это правильное прочтение стандарта ISO C 2011?

0 ответов

Другие вопросы по тегам