динамические массивы и переменные

Динамические массивы и переменные: легко и просто!

Всем привет! В этой статье мы создадим массив и переменные применяя указатели. Если вы еще не почитали прошлую (начальную) статью про указатели, то советуем сначала изучить ее. Ну а если вы это все знаете, то погнали!

Быстрый переход по статье.

Как это работает Что такое динамические переменные

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

Чтобы мы могли полноценно создавать динамические переменные, нам понадобится изучить конструктор — new, после его использования в оперативной памяти компьютера выделяются ячейки на тот тип данных, который мы указали.

На каждый тип данных выделяется разное количество ячеек.

Как это сделать Как создать динамические переменные в C++

Для создания динамических переменных нам понадобится применять конструкцию ниже:

Давайте подробно ее разберем:

  • <тип данных указателя> — указанный тип данных почти ни на что не повлияет. Читайте ниже.
  • new — это конструктор, который и будет заключительным звеном для создания нашей переменной.
  • <тип данных> — здесь нам понадобится указать тип, какой будет храниться в переменной. Он необязательно должен совпадать с типом указателя.
  • <первоначальное значение> — с помощью круглых скобок можно указать значение переменной еще при ее инициализации. Использование круглых скобок в этой конструкции необязательно.

Вы должны знать! Если тип переменной отличается от типа указателя — то эта динамическая переменная будет весить больше в оперативной памяти, чем такая же переменная с одинаковыми типами!

Выполнение кода С++ Пример использования динамических переменных

Внизу мы решили использовать динамические переменные:

  • В строке 7: мы объявили переменную, оперируя конструктором new.
  • Дальше в строке 11: значение нашей переменной становится равно 10.
  • И в самом конце, в строке 15: выводим значение нашей переменной на экран.

Важно помнить! Динамические переменные — это указатели, и поэтому перед ними обязательно должен стоять оператор *.

удаление переменной C++ Удаление динамических переменных

Как мы говорили выше, у нас есть возможность освобождать память переменной или, если понятным языком, удалять переменную из оперативной памяти ПК.

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

Чтобы его использовать, нужно применить конструкцию ниже:

  • В самом начале мы используем оператор delete.
  • Дальше идет имя переменной.

Вы должны обратить внимание на отсутствие оператора * перед именем переменной. Многие начинающие прогеры забывают про это и в дальнейшем пытаются найти ошибку часами.

 Статическое и динамическое объявление переменных

Статическое объявление переменных имеет такой вид: int number;

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

Как это работает Что такое динамические массивы

Мы уже знакомы с миром массивов в C++. Мы не раз создавали их на определенное количество ячеек и при этом использовали статическое создание массивов.

Но еще ни разу не затрагивали их использование с указателями!

Мы создавали массивы на сто тысяч элементов, а то и больше. И не один раз бывало, что большое количество ячеек оставались неиспользованными. Это является неправильным применением оперативной памяти в ПК.

Чтобы мы бесполезно не использовали оперативную память в компьютере, нам понадобится оперировать с указателями в свете массивов.

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

Например, пользователь захотел вписать 1000 чисел в массив, а мы из-за незнания этого факта сделали массив всего лишь на 500 ячеек.

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

 Как работают динамические массивы

Для работы динамических массивов нам понадобится при инициализации указатель (всего лишь при инициализации!) и уже знакомый конструктор new.

Как это сделать Как создать динамический массив в C++

Чтобы создать динамический массив мы будем использовать конструкцию ниже:

  • <тип данных> — без разницы какой тип данных тут будет находиться, но лучше тот, который будет совпадать с типом переменных.
  • <тип переменных> — указанный сюда тип и будут иметь ячейки массива.
  • <количество ячеек> — здесь мы задаем размер массива (например [n] или [25]).

Динамический массив полностью идентичен обычному массиву, кроме:

  • Своей инициализации
  • Возможностью своевременно освободить память.

Давайте рассмотрим пример с использованием динамического массива:

Вот что будет при выполнении программы:

dinamic_array.cpp
Задайте количество чисел, которое вы хотите ввести: 5
Введите 5 чисел: 2 4 6 8 16
Теперь давайте выведем элементы массива в обратном порядке: 16 8 6 4 2
Удаляем массив!
Process returned 0 (0x0) execution time : 0.010 s
Press any key to continue.

удаление переменной C++ Удаление динамического массива

Для удаления динамического массива нам понадобится уже знакомый оператор — delete.

Важно запомнить, что квадратные скобки нужно ставить перед <именем массива>.

Как это сделать Как создать двумерный динамический массив в C++

Для создания двумерного динамического массива мы будем использовать похожую конструкцию (как и в одномерном динамическом массиве):

Вам нужно обратить внимание на:

  • Дополнительный оператор * перед <имя массива> и после <тип данных массива>.

Дальше для каждой ячейки мы должны создать одномерный массив. Чтобы это сделать, нам понадобится цикл for и конструктор new.

В <количество ячеек> можно задавать разные значения. Поэтому сначала для первого массива можно задать длину 1 (new int [1]), потом для второго — длину 2 (new int [2]), как в примере ниже.

Внизу находится пример двумерного динамического массива:

  • В строках 8 — 11: создали двумерный динамический массив.
  • В строках 13 — 18: заполнили массив.
  • В строках 20 — 26: подсчитали и вывели по отдельности на экран сумму всех массивов.
  • В строках 28 — 30: происходит удаление массива (об этом ниже).

удаление переменной C++ Удаление двумерного динамического массива

Для удаление двумерного динамического массива мы будем использовать уже похожую схему. Но в ней присутствует цикл for, и после <имя массива> находится индекс того массива который будет удален.



Тест на тему «Динамические массивы и переменные». Проверь себя!

Пожалуйста, подождите пока страница загрузится полностью.
Если эта надпись не исчезает долгое время, попробуйте обновить страницу. Этот тест использует javascript. Пожалуйста, влкючите javascript в вашем браузере.

If loading fails, click here to try again

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


На этом у нас все! Если есть вопрос, пишите в комментариях. Удачи!




Комментарии к записи “Динамические массивы и переменные: легко и просто!”

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

  • Максим:

    Классный сайт, буду продолжать учить C++ на нем и дальше. Эта статья про динамические массивы и переменные в C++ очень мне помогла. Я смог узнать зачем они применяются, как используются в программе. А очень порадовала информация про создания двумерного динамического массива в C++. Давно хотел найти, но нигде не было информации. И да еще про их удаление очень понравилось. Вообщем спасибо, что помогаете новичкам становиться мастерами! Так держать !

  • Александр:

    Почему объявление динамического массива осуществляется именно за счет указателя,а не переменной по тому же принципу?

  • Дмитрий:

    Подскажите, пожалуйста! в каком месте программы объявлять двумерный динамический массив. int main отсутствует. объявляю вместе, где все переменные, но на for ругается. использую c++ builder embarcadero

  • Константин:

    Спасибо. Статья помогла!

  • Дмитрий:

    В тесте Вопрос 2
    Какая библиотека нужно для создания динамических переменных и массивов?
    Показывает только последний ответ (никакой).
    Остальные ответы отсутствуют. Просто белые поля. Прошу проверить код страницы. Отключение Антирекламных плагинов, и изменение размера страницы не меняют дела.