Sign in Join
Wiki copytemporary

^/ru: what changed

Revision 6 to 7. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11^
22
33В кодировках [[ASCII/ru|ASCII]] и [[FPC Unicode support/ru|Unicode]] символ с десятичным кодом `94` (или [[Hexadecimal/ru|шестнадцатеричным]] `5E`) определен как символ **^** (Circumflex accent).
44
55Для любого типа данных [[Pointer/ru|тип `pointer`]] для этих данных может быть объявлен с помощью оператора **^** перед [[Data type/ru|типом данных]].
66
77
88
99```
10101program pointerDemo(input, output, stderr);
1111 2
1212 3type
1313 4 listItem = record
1414 5 payload: integer;
1515 6 // следующий пункт по элементу списка
1616 7 next: ^listItem;
1717 8 end;
1818 9
1919 10var
2020 11 start: ^listItem;
2121 12
2222 13begin
2323 14 new(start);
2424 15 if not assigned(start) then
2525 16 begin
2626 17 writeLn(stderr, 'не удалось получить память для start');
2727 18 halt(1);
2828 19 end;
2929```
3030
3131Содержимое `pointer` можно отслеживать, _разыменовывая_ его путем добавления [символа] `^` к [[Identifier/ru|идентификатору]]. Вместо того, чтобы имеющегося у вас на руках адреса памяти, вы сможете посмотреть на содержимое памяти _по_ этому адресу. Если это типизированный указатель, операции и синтаксис для этого типа корректны, например, операция [[Becomes/ru|присвоения]] в следующем примере.
3232```
333321 // разыменование указателя, т.е. его отслеживание
3434 22 start^.payload := 7;
3535 23
3636 24 dispose(start);
3737 25end.
3838```
3939
4040Однако попытка отследить [[Nil/ru|`nil`'евой]] указатель приведет к ошибке [[runtime error|времени выполнения]] (RTE 216 “general protection fault”). В такой ситуации условие`not assigned(start)` в строке 15 предназначено для отлова [этой коллизии].
4141
4242## См.также
4343
44- * [`{$pointerMath off}`](</index.php?title=sPointermath&action=edit&redlink=1> "sPointermath \(page does not exist\)") запрещает использование указателей в арифметических выражениях
45- * [`{$typedAddress on}`](</index.php?title=sTypedaddress&action=edit&redlink=1> "sTypedaddress \(page does not exist\)") в сочетании с оператором получения адреса [[@/ru|`@`]]
46- * [`{$modeSwitch autoDeref-}`](</index.php?title=sModeswitch&action=edit&redlink=1> "sModeswitch \(page does not exist\)") \- автоматическое (тихое) разыменование типизированных указателей
44+ * [[sPointermath|`{$pointerMath off}`]] запрещает использование указателей в арифметических выражениях
45+ * [[sTypedaddress|`{$typedAddress on}`]] в сочетании с оператором получения адреса [[@/ru|`@`]]
46+ * [[sModeswitch|`{$modeSwitch autoDeref-}`]] \- автоматическое (тихое) разыменование типизированных указателей
4747
4848
4949
50-navigation bar: topic: Pascal symbols single characters | [[Plus/ru|`+` (плюс)]] • [[Minus/ru|`-` (минус)]] • [[*/ru|`*` (звездочка)]] • [[Slash/ru|`/` (слеш)]]
51-[[Equal/ru|`=` (равно)]] • [[Greater than/ru|`>` (больше чем)]] • [[Less than/ru|`<` (меньше чем)]]
52-[`.` (точка)](</index.php?title=period/ru&action=edit&redlink=1> "period/ru \(page does not exist\)") • [[Colon/ru|`:` (двоеточие)]] • [`;` (точка с запятой)](</index.php?title=;/ru&action=edit&redlink=1> ";/ru \(page does not exist\)")
53-`^` (hat) • [[@/ru|`@` (at)]]
54-[[Dollar sign/ru|`$` (dollar sign)]] • [[&/ru|`&` (ampersand)]] • [`#` (hash)](</index.php?title=Hash/ru&action=edit&redlink=1> "Hash/ru \(page does not exist\)")
55-[`'` (single quote)](</index.php?title=%27/ru&action=edit&redlink=1> "'/ru \(page does not exist\)")
56----|---
57-character pairs | [[Not equal/ru|`<>` (не равно)]] • [`<=` (less than or equal)](</index.php?title=Less_than_or_equal/ru&action=edit&redlink=1> "Less than or equal/ru \(page does not exist\)") • [[Becomes/ru|`:=` (присвоить)]] • [`>=` (greater than or equal)](</index.php?title=Greater_than_or_equal/ru&action=edit&redlink=1> "Greater than or equal/ru \(page does not exist\)") • [[symmetric difference|`><` (symmetric difference)]] • [[Slash|`//` (double slash)]]
58-
59-
60-****
50+**navigation bar: topic: Pascal symbols**
51+
52+_single characters:_ [[Plus/ru|`+` (плюс)]] • [[Minus/ru|`-` (минус)]] • [[*/ru|`*` (звездочка)]] • [[Slash/ru|`/` (слеш)]] • [[Equal/ru|`=` (равно)]] • [[Greater than/ru|`>` (больше чем)]] • [[Less than/ru|`<` (меньше чем)]] • [[period/ru|`.` (точка)]] • [[Colon/ru|`:` (двоеточие)]] • [[;/ru|`;` (точка с запятой)]] • `^` (hat) • [[@/ru|`@` (at)]] • [[Dollar sign/ru|`$` (dollar sign)]] • [[&/ru|`&` (ampersand)]] • [[Hash/ru|`#` (hash)]] • [['/ru|`'` (single quote)]]
53+
54+_character pairs:_ [[Not equal/ru|`<>` (не равно)]] • [[Less than or equal/ru|`<=` (less than or equal)]] • [[Becomes/ru|`:=` (присвоить)]] • [[Greater than or equal/ru|`>=` (greater than or equal)]] • [[symmetric difference|`><` (symmetric difference)]] • [[Slash|`//` (double slash)]]
6155
6256---
6357*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](/wiki-contact).*

Back to history