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



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

Автор Мурад Ахундов задал вопрос в разделе Другие языки и технологии

Зачем нужны динамические переменные в C++ Кто-нибудь объяснит на человеческом?) и получил лучший ответ

Ответ от Nikita zaharov[гуру]
Динами́ческая переме́нная — переменная в программе, место в оперативной памяти под которую выделяется во время выполнения программы. По сути, она является даже не переменной, а участком памяти, выделенным системой программе для конкретных целей. Динамическая переменная — один из классов памяти переменной.
Так как динамическая переменная создаётся во время выполнения программы, у неё нет собственного идентификатора. Работа с динамической переменной ведётся косвенно, через указатель. Создание такой переменной заключается в выделении участка памяти с помощью специальной функции. Эта функция возвращает адрес в памяти, который назначается указателю. Процесс доступа к памяти через указатель называется разыменованием. После окончания работы с динамической переменной выделенную под неё память необходимо освободить — для этого тоже есть специальная функция.
В языках программирования относительно низкого уровня указатели используются явно, в языках более высокого уровня динамические типы данных могут быть оформлены как классы, а процессы выделения и освобождения памяти описаны в конструкторе и деструкторе каждого класса.

Ответ от Krab Bark[гуру]
Для экономного расходования памяти. Часто количество данных, которые будут перерабатываться в программе, заранее неизвестно.

Ответ от Shalafi[гуру]
Чтоб выделить нужное кол-во памяти для пользовательского типа данных.

Ответ от Special L.O.R. forces[гуру]
Загрузка файла, какой массив нужен для его загрузки?
char a[9999999999] Занимает слишком много памяти
а
char b[55555] Может не хватить
Поэтому юзаем динамический
char *c = new char[Размер файла]

Ответ от Максим[гуру]
Есть стековая память, а есть куча. В стековой памяти данные лежат на своих местах, например, если мы создаём какой-то объект, то мы знаем, что первые несколько байт у него заложены под одно, следующие под другое и т. д. Если мы располагаем в стековой памяти массив, то он тоже должен иметь фиксированную длину. Если мы запускаем какой-то метод, то и в рамках этого метода всё на своих местах. Когда метод заканчивается или какой-либо объект уничтожается и т. д., то и стековая память освобождается. Когда же у нас динамическая переменная, то в стековой памяти у нас лежит только ссылка на эту переменную, которая сама располагается в куче, а не в стеке. Таким образом мы можем создать массив с заранее неизвестной длиной (динамический массив). Мы можем создавать переменные и объекты, которые сможем передавать в другие участки кода (через указатели на них). Но данные в куче нужно удалять самостоятельно.

Ответ от Sagittarius[гуру]
На человеческом языке идею динамической памяти понять легко.
Представьте себе, что вы делаете вычисления в тетрадке. Каждая клетка, это результат, который вам нужен. Теперь возникает необходимость выполнить какие-то вычисления с большим объемом промежуточных данных. Вы достаете чистый лист. Делаете на нем вычисления, а полученный результат записываете в тетрадь. Лист с промежуточными расчетами вы выбрасываете.
Единственное отличие от бумажных расчетов в том, что в компьютере в можете запросить снова этот лист, стереть его содержимое и использовать в других расчетах.

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Зачем нужны динамические переменные в C++ Кто-нибудь объяснит на человеческом?)
Динамическая переменная программирование на Википедии
Посмотрите статью на википедии про Динамическая переменная программирование
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*