Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






Способ.

Procedure new (p);
где р -параметр типа указатель.

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

Пример:

Var A, B: ^ integer;

C: ^ real;

Begin new(A);

New(C);

В первый момент «куча» свободна и переменная heapptr имеет то же значение, что и heaporg (указатель начала «кучи»), т.е. указывает на начало «кучи».

После выполнения процедуры new(А) переменная А получит значение heapptr и по этому адресу будет выделено 2 байта памяти, т.к. А – указатель на тип integer. Таким образом, heapptr увеличивает значение на 2. В результате выполнения процедуры new(C) переменная С получит значение heapptr. И heapptr увеличит свое значение на 6, т.к. С – указатель на тип real. В итоге heapptr увеличит значение на 8.

Способ.

Значение указателя можно изменить с помощью оператора присваивания

< указатель 1>: =< указатель 2>;

при этом необходимо, чтобы оба указателя были одного и того же типа. Действие такого оператора приводит к тому, что < указатель 1> будет указывать на ту же ячейку в «куче», что и < указатель 2>, т.е. будет иметь значением тот же адрес.

Можно написать: А: = В;

В частности, любому указателю можно присвоить стандартное значение пустого адреса: А: = Nil; В результате этого А не будет указывать ни на одну ячейку.

Способ.

Присвоить значение переменной - указателю можно использовав процедуру Getmem(p, size); где р – переменная-указатель, а size – переменная целого типа. Эта процедура позволяет выделить в куче область необходимых размеров size и присвоить адрес этой области переменной р.

Способ.

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

Y: = @ x;

где у – переменная типа указатель, а х – простая переменная. В результате у получает значение адреса ячейки памяти, в которой хранится х.

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

Пример: Пусть указатель у указывает на х (у: = @ x;), тогда в результате выполнения оператора y ^: = 5; значение переменной х будет равно 5, т.е. у^ - это значение, на которое указывает указатель у.

 

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

 

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

Выделение памяти для динамической переменной осуществляется вызовом процедуры new. После того, как указатель приобрел некоторое конкретное значение, отличное от nil, т.е. стал указывать на конкретный адрес «кучи», по этому адресу может быть размещено значение соответствующего типа.

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

< имя указателя> ^

Пример: подсчитаем сумму двух динамических переменных.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.