Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Процедуры и функции для работы с указателями и адресами в Паскале⇐ ПредыдущаяСтр 34 из 34
Функции:
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; Нарушение авторских прав |