Существует два способа выделения памяти массиву, размер которого неизвестен в начале. Наиболее распространенным способом является использование malloc
как этотmalloced array VS. variable-length-array
int * array;
... // when we know the size
array = malloc(size*sizeof(int));
Но это тоже это действует в C99, чтобы определить массив после того как мы знаем размер.
... // when we know the size
int array[size];
Они абсолютно то же самое?
Во-вторых, даже в C99, не всегда справедливо. В соответствии с C99 §6.10.8.3 «Макросы условных функций» реализация может определять ** __ STDC_NO_VLA __ ** и *** no *** реализовать массивы переменной длины и * все еще соответствовать стандарту. * – WhozCraig
** Это не дублированный вопрос **! Ни один из упомянутых вопросов не содержит подробностей о различиях. – Jens
@WhozCraig AFAIK, это вещь 2011 года. Нет такого раздела в том, что у меня есть, чтобы быть копией стандарта C99. –