Библиотека программиста

«Если отладка - процесс удаления ошибок, то программирование должно быть процессом их внесения»

Э.Дейкстра

Главная страница > Язык Object Pascal > 12. Тип указатель

12. Тип указатель

Понятие указателя. Типизированные (typed) и нетипизированные (untyped) указатели.

Нетипизированные указатели, объявляемые как имеющие тип Pointer, используются в тех случаях, когда требуется просто сохранить значение адреса. Эти указатели нельзя разыменовывать, так как они не связаны с каким-либо определенным типом данных. Они могут быть использованы, например, для того, чтобы обойти характерную для Паскаля строгость в отношении типов данных:

type PInteger=^integer;

var

I : integer;

R : single;

P : pointer;

begin

R:=123; P:=@R; i:=PInteger(P)^;

end;

Операция взятия адреса @ применима также к подпрограммам. Кроме этой операции при работе с указателями используются стандартные процедуры New, Dispose, GetMem и FreeMem, а также функции Addr и Ptr.

В Object Pascal определены основные типы указателей на символ PAnsiChar и PWideChar, а также родовой тип PChar, которые используются для обработки строк с завершающим нулем. Некоторые другие стандартные типы указателей, определенные в модулях System и SysUtils, приведены в таблице.

Pointer type

Points to variables of type

PAnsiString, PString

AnsiString

PByteArray

ByteArray (declared in SysUtils). Used to typecast dynamically allocated memory for array access.

PCurrency

Currency

PExtended

Extended

POleVariant

OleVariant

PShortString

ShortString

PTextBuf

TextBuf (declared in SysUtils). TextBuf is the internal buffer type in a TTextRec file record.)

PVarRec

TVarRec (declared in System)

PVariant

Variant

PWideString

WideString

PWordArray

TWordArray (declared in SysUtils). Used to typecast dynamically allocated memory for arrays of 2-byte values.





<< Предыдущая статья
«11. Файловые типы»
Следующая статья >>
13. Процедурные типы
 
При использовании любых материалов с сайта http://www.introligator.org
обратная ссылка обязательна.
Rambler's Top100 Рейтинг@Mail.ru