Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

C++ динамическое выделение массивов с примером

Что такое динамический массив?

Динамический массив очень похож на обычный массив, но его размер можно изменить во время выполнения программы. Элементы DynamArray занимают непрерывный блок памяти.

После создания массива его размер нельзя изменить. Однако динамический массив отличается. Размер динамического массива может увеличиваться даже после заполнения.

При создании массива ему выделяется заранее определенный объем памяти. Это не относится к динамическому массиву, поскольку он увеличивает размер своей памяти на определенный коэффициент, когда это необходимо.

В этом руководстве по C++ вы узнаете

Факторы, влияющие на производительность динамических массивов

Начальный размер массива и коэффициент его роста определяют его производительность. Обратите внимание на следующие моменты:

  1. Если массив имеет небольшой размер и небольшой коэффициент роста, он будет чаще перераспределять память. Это снизит производительность массива.
  2. Если массив имеет большой размер и большой коэффициент роста, у него будет огромный кусок неиспользуемой памяти. Из-за этого операции по изменению размера могут занять больше времени. Это снизит производительность массива.

Новое ключевое слово

В C++ мы можем создать динамический массив, используя ключевое слово new. Количество размещаемых элементов указывается в паре квадратных скобок. Имя типа должно предшествовать этому. Запрошенное количество элементов будет выделено.

Синтаксис:

Новое ключевое слово имеет следующий синтаксис:

06

pointer_variable — это имя переменной-указателя.

data_type должен быть допустимым типом данных C++.

Затем ключевое слово возвращает указатель на первый элемент. После создания динамического массива мы можем удалить его с помощью ключевого слова delete.

Пример 1:

15 


Вывод:

Вот скриншот кода:

Пояснение кода:

  1. Включите заголовочный файл iostream в нашу программу, чтобы использовать ее функции.
  2. Включите пространство имен std в нашу программу, чтобы использовать его классы, не вызывая его.
  3. Вызовите функцию main(). Логика программы должна быть добавлена ​​в тело функции.
  4. Объявите две целочисленные переменные x и n.
  5. Выведите на консоль текст, предлагающий пользователю ввести значение переменной n.
  6. Чтение пользовательского ввода с клавиатуры и присвоение его переменной n.
  7. Объявите массив, содержащий в общей сложности n целых чисел, и назначьте его переменной-указателю *arr.
  8. Вывести сообщение, предлагающее пользователю ввести n элементов.
  9. Используйте цикл for для создания переменной цикла x для перебора элементов, введенных пользователем.
  10. Чтение элементов, введенных пользователем, и сохранение их в массиве arr.
  11. Конец тела цикла for.
  12. Выведите текст на консоль.
  13. Используйте цикл for для создания переменной цикла x для перебора элементов массива.
  14. Выведите на консоль значения, содержащиеся в массиве с именем arr.
  15. Конец тела цикла for.
  16. Программа должна возвращать значение после успешного завершения.
  17. Конец тела функции main().

ПРИМЕЧАНИЕ. В приведенном выше примере пользователю разрешено указывать любой размер массива во время выполнения. Это означает, что размер массива определяется во время выполнения .

Инициализация динамически размещаемых массивов

Динамический массив легко инициализировать значением 0.

Синтаксис:

23

В приведенном выше синтаксисе длина обозначает количество элементов, добавляемых в массив. Поскольку нам нужно инициализировать массив значением 0, его следует оставить пустым.

Мы можем инициализировать динамический массив, используя список инициализаторов. Давайте создадим пример, демонстрирующий это.

Пример 2:

37

Вывод:

<сильный>

Вот скриншот кода:

Пояснение кода:

  1. Включите заголовочный файл iostream в нашу программу, чтобы использовать ее функции.
  2. Включите пространство имен std в нашу программу, чтобы использовать его классы, не вызывая его.
  3. Вызовите функцию main(). Логика программы должна быть добавлена ​​в тело функции.
  4. Объявите целочисленную переменную с именем x.
  5. Объявите динамический массив с именем array, используя список инициализаторов. Массив будет содержать 5 целочисленных элементов. Обратите внимание, что мы не использовали оператор «=» между длиной массива и списком инициализаторов.
  6. Выведите текст на консоль. Endl — это ключевое слово C++, означающее конечную строку. Курсор перемещается к следующему предложению.
  7. Используйте цикл for для перебора элементов массива.
  8. Вывести на консоль содержимое массива с именем array.
  9. Конец тела цикла for.
  10. Программа должна возвращать значение после успешного завершения.
  11. Конец тела функции main().

Изменение размера массивов

Длина динамического массива устанавливается во время выделения.

Однако в C++ нет встроенного механизма изменения размера массива после его выделения.

Однако вы можете преодолеть эту проблему, динамически выделяя новый массив, копируя элементы и затем удаляя старый массив.

Примечание:этот метод подвержен ошибкам, поэтому старайтесь его избегать.

Динамическое удаление массивов

Динамический массив должен быть удален из памяти компьютера после того, как его назначение выполнено. Оператор удаления может помочь вам в этом. Освобожденное пространство памяти можно затем использовать для хранения другого набора данных. Однако, даже если вы не удалите динамический массив из памяти компьютера, он будет удален автоматически после завершения работы программы.

Примечание.

Чтобы удалить динамический массив из памяти компьютера, вместо удаления следует использовать команду delete[]. [] указывает ЦП удалить несколько переменных, а не одну переменную. Использование delete вместо delete[] при работе с динамическим массивом может привести к проблемам. Примеры таких проблем включают утечки памяти, повреждение данных, сбои и т. д.

Пример 3:

45

Вывод:

Вот скриншот кода:

Пояснение кода:

  1. Включите заголовочный файл iostream в нашу программу, чтобы использовать ее функции.
  2. Включите пространство имен std в нашу программу, чтобы использовать его классы, не вызывая его.
  3. Вызовите функцию main(). Логика программы должна быть добавлена ​​в тело функции.
  4. Объявите две переменные x и n целочисленного типа данных.
  5. Выведите текст на консоль. В тексте пользователю будет предложено указать количество цифр, которые он введет.
  6. Чтение пользовательского ввода с клавиатуры. Входное значение будет присвоено переменной n.
  7. Объявите переменную-указатель *arr. Массив arr зарезервирует часть памяти для хранения всего n целых чисел.
  8. Вывести на консоль сообщение, предлагающее пользователю ввести n чисел.
  9. Создайте цикл for и переменную цикла x для перебора чисел, введенных пользователем.
  10. Чтение введенных пользователем чисел и сохранение их в массиве arr.
  11. Конец тела цикла for.
  12. Выведите текст на консоль.
  13. Используйте цикл for и переменную цикла x для перебора содержимого массива arr.
  14. Выведите значения массива arr на консоль.
  15. Конец тела цикла for.
  16. Выведите пустую строку на консоль.
  17. Освободить память массива arr.
  18. Программа вернет значение после успешного завершения.
  19. Конец тела функции main().

Обзор:

  • Обычные массивы имеют фиксированный размер. Вы не можете изменить их размер после объявления.
  • Для этих типов массивов размер памяти определяется во время компиляции.
  • Динамические массивы отличаются. Их размеры можно изменить во время выполнения.
  • В динамических массивах размер определяется во время выполнения.
  • Динамические массивы в C++ объявляются с использованием нового ключевого слова.
  • Квадратные скобки используются для указания количества элементов, которые должны храниться в динамическом массиве.
  • После завершения работы с массивом мы можем освободить память с помощью оператора удаления.
  • Используйте оператор удаления с [] для освобождения памяти всех элементов массива.
  • Удаление без [] освобождает память только для одного элемента.
  • Встроенного механизма изменения размера массивов C++ нет.
  • Чтобы инициализировать массив с помощью инициализатора списка, мы не используем оператор «=».

Язык C

  1. С# Массивы
  2. Передача массива в функцию в программировании на C++
  3. C Динамическое выделение памяти
  4. Массивы в C++ | Объявить | Инициализировать | Указатель на примеры массивов
  5. Операторы в C++ с примером:что такое, типы и программы
  6. Оператор C++ Switch Case с ПРИМЕРОМ
  7. Структура С++ с примером
  8. std::list в C++ с примером
  9. Разница между структурой и классом:объяснение на примере C++
  10. Сортировка выбором в программе Java с примером