^/ru
│
English (en) │
suomi (fi) │
русский (ru) │
В кодировках ASCII и Unicode символ с десятичным кодом 94
(или шестнадцатеричным 5E
) определен как символ ^ (Circumflex accent).
Для любого типа данных тип pointer
для этих данных может быть объявлен с помощью оператора ^ перед типом данных.
program pointerDemo(input, output, stderr);
type
listItem = record
payload: integer;
// следующий пункт по элементу списка
next: ^listItem;
end;
var
start: ^listItem;
begin
new(start);
if not assigned(start) then
begin
writeLn(stderr, 'не удалось получить память для start');
halt(1);
end;
Содержимое pointer
можно отслеживать, разыменовывая его путем добавления [символа] ^
к идентификатору. Вместо того, чтобы имеющегося у вас на руках адреса памяти, вы сможете посмотреть на содержимое памяти по этому адресу. Если это типизированный указатель, операции и синтаксис для этого типа корректны, например, операция присвоения в следующем примере.
// разыменование указателя, т.е. его отслеживание
start^.payload := 7;
dispose(start);
end.
Однако попытка отследить nil
'евой указатель приведет к ошибке времени выполнения (RTE 216 “general protection fault”). В такой ситуации условиеnot assigned(start)
в строке 15 предназначено для отлова [этой коллизии].
См.также
{$pointerMath off}
запрещает использование указателей в арифметических выражениях{$typedAddress on}
в сочетании с оператором получения адреса@
{$modeSwitch autoDeref-}
- автоматическое (тихое) разыменование типизированных указателей
single characters |
|
character pairs |
|