В настоящее время я изучаю C++. Исходя из Java, для меня очень странно.Почему это не работает: `int arr [size]`, но это делает `int * arr = new int [size]`?
В какой-то момент я попытался создать массив размера, который определяется во время выполнения, например, так:
int size = functionCall(argument);
int array[size];
Это компилируется и побежал, но дал очень странный вывод позже в программе.
Кто-то сказал мне, что я должен сделать это:
int size = functionCall(argument);
int* array = new int[size];
Поскольку new
позволяет материал динамически распределять, то есть, если я правильно понял распределяется в соответствии с чем-то, что это только известным во время выполнения.
Два вопроса:
1- мое понимание new
правильно?
2- Почему C++ не разрешает первую версию моего кода?
Возможный дубликат [Как вы инициализируете динамический массив в C++?] (Http://stackoverflow.com/questions/2029651/how-do-you-initialise-a-dynamic-array-in-c) – dandan78
Первое не работает, потому что ... ну, потому что синтаксис неверен. Синтаксис на разных языках различен, и используемый вами синтаксис недействителен C++. –
@ DavidRodríguez-dribeas Конечно, но сказать 'int array [8]' * is * действительный синтаксис, не так ли? –