WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте

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

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

Пример создания динамической переменной с помощью указателя в языке Pascal:

type tMyArray =  array [1..3] of real;
var pMyArray = ^tMyArray;
begin
  new (pMyArray);    {выделение памяти под массив из трех чисел}
  pMyArray^[1] := 1.23456;
  pMyArray^[2] := 2.71828;
  pMyArray^[3] := 3.14159;
  ......

В языках программирования относительно низкого уровня указатели используются явно, что чревато серьёзными ошибками. В языках более высокого уровня динамические типы данных могут быть оформлены как динамические массивы.

Пример создания динамического массива в языке Delphi:

var MyArray = array of real;
begin
  SetLength(MyArray,3);   {выделение памяти под массив из трех чисел}
  MyArray[0] := 1.23456;  {в Delphi динамические массивы нумеруются в си-образном стиле: от 0 до n-1}
  MyArray[1] := 2.71828;
  MyArray[2] := 3.14159;
  ......

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

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии