Размер массива должен быть известен во время компиляции
Я написал простой код, где я создаю массив без фиксированного размера. Я попытался скомпилировать код в 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
Пожалуйста, ознакомьтесь с документацией по этому вопросу.