Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование - 11 - Указатели.doc
Скачиваний:
9
Добавлен:
09.03.2016
Размер:
207 Кб
Скачать
☆

11.4 Операции с указателями

@

= , <>

—

—

унарная операция определения адреса, например:

PI1 := @i ; ( PI1 — указатель, описанный выше, i — целочисленная переменная );

операции сравнения ( «равно», если указатели ссылаются на один и тот же объект )

11.5 Процедуры и функции для работы с указателями и адресами

Ниже через TPобозначена переменная–типизованный указатель, черезP— нетипизованный, если в качестве параметра приведеноTPP, то можно использовать указатель любого типа.

Procedure ...

New ( var TP ) ;

—

создает новую динамическую переменную определенного типа (выделяет для нее память в куче) и устанавливает на нее указатель TP

Dispose ( var TP ) ;

—

уничтожает динамическую переменную определенного типа (возвращает в кучу фрагмент памяти), на которую указывал указатель TP

GetMem ( var P, Size : Word ) ;

—

создает новую динамическую переменную указанного размера в Size и устанавливает на нее указатель P (для размещения переменной в куче в точном соответствии с размерностью типа часто используется значение функции SizeOf )

FreeMem ( var P, Size : Word ) ;

—

уничтожает динамическую переменную указанного размера в Size , на которую указывал указатель P

Mark ( var TPP ) ;

—

запоминает в TPP текущее значение указателя кучи HeapPtr (используется совместно с процедурой Release для освобождения части кучи)

Release ( var TPP ) ;

—

возвращает кучу к тому состоянию, которое было сохранено соответствующим вызовом Mark, т.е. освобождает всю часть кучи, начиная с адреса, сохраненного в TPP при последующих (после Mark) выделениях памяти

Function ...

Addr ( var X ) : Pointer ;

—

адрес аргумента X, где X — любой объект программы (переменная, процедура, функция), аналог действия операции @

Seg ( X ) : Word ;

—

сегмент адреса X, где X — любой объект программы (переменная, процедура, функция)

Ofs ( X ) : Word ;

—

смещение адреса X, где X — любой объект программы (переменная, процедура, функция)

Ptr ( Seg, Ofs : Word ) : Pointer ;

—

преобразует в значение типа Pointer адрес, заданный сегментом Seg и смещением Ofs

MaxAvail : LongInt ;

—

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

MemAvail : LongInt ;

—

размер в байтах общего свободного пространства кучи

SizeOf ( X ) : Word ;

—

размер аргумента в байтах, где X — переменная любого типа или любой тип