Средства работы с адресами (для работы с сегментом данных, не с кучей)

Функция Addr(x): pointer; Операция @x: pointer;

Возвращают адрес объекта Х. Их действие одинаково.

Var

P,q:pointer;

x:string;

---------------------------------------------------------

p:=Addr(x); q:=@x;

{p=q адреса равны, указывают на один объект.}

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

Создание и удаление динамических переменных

Динамическая память м.б. выделена 2-мя способами.

Типизированные указатели

Процедура New(p);

P – var типа указатель,

Процедура создает новую динамическую переменную и устанавливает на нее типизированный указатель р.

Var

P1:^integer;

P2:^string[6};

-----------------------------------------------

New(p1); p1^:=2;

New(p2); p2^:=’stroka’;

Эта процедура ищет в незанятой памяти подходящий по размеру кусок и, "застолбив" это место для безымянной динамической переменной, записывает в типизированный указатель адрес выделенного участка. Поэтому часто говорят, что процедура new() создает динамическую переменную. Размер выделяемого "куска памяти" напрямую зависит от типа указателя.

Например, если переменная p1 была описана как указатель на integer-переменную, то процедура new(p1) выделит два байта; под переменную типа string[6] необходимо выделить семь байт и т.д.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: