как объявить массив, используя переменную, получая значение переменной в качестве входных данных? Проверить мой код

      int a;
cin>>a;
int arr[a];

Я хочу объявить массив в соответствии с размером пользователя. Я новичок в программировании. Что может быть сделано? Правилен ли этот метод?

2 ответа

То, чего вы хотите достичь, называется массивом переменной длины, короче говоря, VLA , который не является частью стандарта С++ .

Что может быть сделано?

Он вызывает неопределенное поведение .

Правилен ли этот метод?

Неа. Лучшая возможность воспользоваться небольшой помощьюstd::vector<>стоит здесь. Он динамически выделяет запрошенные байты данных, и при желании вы можете инициализировать их требуемыми значениями.

Вы можете добиться этого, как:

      int n = 0;
std::cin >> n; // make sure it's a valid size
std::vector<int> a(n);

Если вы хотите, чтобы время выполнения продолжало увеличиваться, просто используйте его push_back()метод, и вы можете получить размер вектора через его size().

Вы пометили это C++, и в этом случае есть очень мало оправданий, чтобы не решать это с помощью std::vector.

Если вы должны сделать это в стиле C, вы можете написать:

      int a;
cin >> a;
int * arr = (int *)malloc(sizeof(int) * a);

или лучше (согласно комментарию Томаса ниже):

      int a;
cin >> a;
int * arr = new int[a];

но вектор определенно предпочтительнее.

Другие вопросы по тегам