^/ru
^
В кодировках ASCII и Unicode символ с десятичным кодом 94 (или шестнадцатеричным 5E) определен как символ ^ (Circumflex accent).
Для любого типа данных [[Pointer/ru|тип pointer]] для этих данных может быть объявлен с помощью оператора ^ перед типом данных.
1program pointerDemo(input, output, stderr);
2
3type
4 listItem = record
5 payload: integer;
6 // следующий пункт по элементу списка
7 next: ^listItem;
8 end;
9
10var
11 start: ^listItem;
12
13begin
14 new(start);
15 if not assigned(start) then
16 begin
17 writeLn(stderr, 'не удалось получить память для start');
18 halt(1);
19 end;Содержимое pointer можно отслеживать, разыменовывая его путем добавления [символа] ^ к идентификатору. Вместо того, чтобы имеющегося у вас на руках адреса памяти, вы сможете посмотреть на содержимое памяти по этому адресу. Если это типизированный указатель, операции и синтаксис для этого типа корректны, например, операция присвоения в следующем примере.
21 // разыменование указателя, т.е. его отслеживание
22 start^.payload := 7;
23
24 dispose(start);
25end.Однако попытка отследить [[Nil/ru|nil'евой]] указатель приведет к ошибке времени выполнения (RTE 216 “general protection fault”). В такой ситуации условиеnot assigned(start) в строке 15 предназначено для отлова [этой коллизии].
См.также
{$pointerMath off}запрещает использование указателей в арифметических выражениях{$typedAddress on}в сочетании с оператором получения адреса [[@/ru|@]]{$modeSwitch autoDeref-}- автоматическое (тихое) разыменование типизированных указателей
navigation bar: topic: Pascal symbols single characters | [[Plus/ru|+ (плюс)]] • [[Minus/ru|- (минус)]] • [[*/ru|* (звездочка)]] • [[Slash/ru|/ (слеш)]]
[[Equal/ru|= (равно)]] • [[Greater than/ru|> (больше чем)]] • [[Less than/ru|< (меньше чем)]]
. (точка) • [[Colon/ru|: (двоеточие)]] • ; (точка с запятой)
^ (hat) • [[@/ru|@ (at)]]
[[Dollar sign/ru|$ (dollar sign)]] • [[&/ru|& (ampersand)]] • # (hash)
' (single quote)
---|---
character pairs | [[Not equal/ru|<> (не равно)]] • <= (less than or equal) • [[Becomes/ru|:= (присвоить)]] • >= (greater than or equal) • [[symmetric difference|>< (symmetric difference)]] • [[Slash|// (double slash)]]
From the Free Pascal wiki, page "^/ru", as the Internet Archive kept it on 2022-08-16, last changed on 2022-08-06. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
