Размер массива должен быть известен во время компиляции

Я написал простой код, где я создаю массив без фиксированного размера. Я попытался скомпилировать код в gcc и работает нормально. Пожалуйста, объясните, почему этот рабочий размер массива должен быть известен во время компиляции.

Вот код, который я использовал.

void f(int k)
{
   int a[k];
   .....//some operation
}

int main()
{
  int i = 10;
  f(10);
  return 0;
}

1 ответ

Решение

Эта функция известна как VLA или массив переменной длины. Это поддерживается не во всех стандартах Си. В последних стандартах C, таких как C11 а также C99, поддерживается, но не в более старых стандартах C, как "C89".

Если вы используете gccПожалуйста, ознакомьтесь с документацией по этому вопросу.

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