Можно ли написать код, как показано ниже?Объявление массива внутри функции
void func(int v[], int size) {
int array_local[size];
for(int i = 0; i < size; i++) array_local[i] = v[i];
/*
Other stuff...
*/
}
Или я могу наткнуться на какую-то ошибку?
Зависит от того, что вы делаете, а также от значения 'size'. Однако ничего в данном коде не так. –
Обратите внимание, что массивы переменной длины хранятся в стеке, и у вас ограниченное пространство стека, поэтому этот случай является проблемой. Также обратите внимание, если вы хотите, чтобы код был переносимым [VLA - это функция C99] (http://stackoverflow.com/a/16588397/1708801) и [до недавнего времени Visual Studio не поддерживала C99] (http: // stackoverflow .com/q/27826409/1708801), и насколько я знаю, массивы переменной длины все еще отсутствуют. –
Это нормально в C99, если размер достаточно мал, чтобы не переполнять стек.Вам будет лучше с 'size' типа' size_t'. – dasblinkenlight