Я думаю, что правильнее назвать это динамическое управление памятью.Также я действительно сомневаюсь, что приведенный вами пример кода будет работать правильно.Например:
int sampleArray[number];
также вызовет ошибку во многих компиляторах, и в конечном итоге вы все равно получите предупреждение в других компиляторах.
Вам не нужно использовать функцию для инициализации массива с другим размером.Вы можете просто сделать это с помощью указателя:
int size;
std::cin >> size;
int * array = new int[size];
Это будет работать в любом компиляторе, о котором я знаю, а также не будет вызывать предупреждения.Но вы должны будете помнить, что вам придется удалять память, когда вам больше не нужен массив.Например, когда он собирается выйти из области видимости.
delete []array;
Начиная с C ++ 11 вы можете использовать умный указатель.Они позаботятся о памяти массива вместо вас и удалят память.
int size;
std::cin >> size;
std::shared_ptr<int[]> array(new int[size]);
То же самое можно сделать с unique_ptr и так далее.Во многих случаях будет достаточно просто использовать std :: vector для любого типа хранилища типа int.