Если вы хотите определить размер массива во время выполнения , вам нужен контейнер, подходящий для этого.Поскольку этот вопрос помечен C ++, вы должны использовать некоторые стандартные контейнеры библиотеки.
В вашем случае, std::vector
является лучшим:
#include <iostream>
#include <vector>
int main()
{
size_t arraySize = 0;
std::cout << "How many numbers would you like to visualize?\n"
<< "Numbers: ";
std::cin >> arraySize;
std::cout << "You will visualize " << arraySize << " numbers.\n"
<< "Begin: \n";
// declare std::vector and allocate memory for arraySize elements
std::vector<int> array(arraySize);
for (int i = 0; i < array.size(); i++) {
std::cin >> array[i];
}
std::cout << "You have inserted the following numbers: \n";
for (int a = 0; a < array.size(); a++) {
std::cout << array[a] << " ";
}
std::cout << std::endl;
}
Подумайте о том, что пользователь все еще может вводить все, что ему нравится, например, строку.Улучшение (и хорошая практика) будет в проверять пользовательский ввод.
Использование подхода, при котором вы определяете int array[arraySize]
после получения arraySize
, поскольку пользовательский ввод делает не решить вашу проблему.Объявление массивов переменной длины недопустимо в C ++.Если вы включите больше предупреждений компилятора, вы получите уведомление об этом.
Например, использование gcc 8.2.0 с флагом -Wpedantic
дает следующее:
warning: ISO C++ forbids variable length array 'array'