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


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

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






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





 

Функции:

 

ADDR(X) – результат POINTER, в котором содержится адрес аргумента. (X –имя любой переменной, процедуры или функции).

OFS(X):WORD – возвращает значение смещения адреса объекта X.

SEG(X):WORD – возвращает значение сегмента адреса объекта X.

CSEG(X):WORD – возвращает текущее значение регистра Cs.

DSEG(X):WORD – возвращает текущее значение регистра Ds.

SSEG(X):WORD – возвращает текущее значение регистра Ss.

SPRT(X):WORD - возвращает текущее значение регистра Sp.

PRT(SEG,OFS) – преобразует отдельно заданные значение сегмента и смещения к типу указателя.

MAXAVAIL:LONGINT - возвращает размер наибольшего непрерывного участка кучи.

MEMXAVAIL:LONGINT - возвращает размер общего свободного пространства кучи.

 

Процедуры:

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

указателем.

NEW(TP:POINTER) – резервирует фрагмент кучи для размещения переменной.

GETMEM(P:POINTER; ZIZE:WORD) –выделяет из кучи блок заданного размера и адрес его начала присваивает указателю.

FREEMEM(P:POINTER; ZIZE:WORD) – освобождает блок заданного размера.

MARK(P:POINTER) – запоминает текущую вершину кучи (адрес начала свободного участка).

RELEASE(P:POINTER) – освобождает участок кучи от адреса с P до конца.

 

Пример. Разместить запись в динамической памяти, затем удалить ее с памяти.

Program pointer1;

{Работа с динамической папятью}

Uses crt;

Type

FriendRec = Record

Name: string[30];

Age: Byte;

End;

FrPtr = ^FriendRec;

Var

p: FrPtr;

Begin

ClrScr;

GetMem(p, SizeOf(FriendRec)); {Выделение памяти в куче}

Write('Введите имя: '); Readln(p^.Name);

Write('Введите возраст: '); Readln(p^.Age);

Writeln;

Writeln('Память для записи о имени и возрасте распределена в куче.');

Writeln;

Writeln('Имя: ',p^.Name);

Writeln('Возраст: ',p^.Age);

Writeln;

FreeMem(p, SizeOf(FriendRec)); {Освобождение памяти}

Writeln('Память, занимаемая записью о имени и возрасте освобождена.');

readln;

End.

 







Date: 2016-07-18; view: 488; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию