Можете ли вы инициализировать массив переменной длины с динамическим размером нулю?
В книге 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) в этом, потому что он настаивает на том, что массивы переменной длины не могут быть инициализированы. Я говорю, что компилятор должен быть в состоянии решить это.
Я не вижу нигде упомянутого, хотя в оригинальных ответах по этому вопросу на Stackru, которые, кажется, предполагают, что это будет работать,
int main(){
int length=20;
int ll[length] = {0};
}
Это правильное прочтение стандарта ISO C 2011?