Sign in Join
Wiki copytemporary

^/ru

^

В кодировках ASCII и Unicode символ с десятичным кодом 94 (или шестнадцатеричным 5E) определен как символ ^ (Circumflex accent).

Для любого типа данных [[Pointer/ru|тип pointer]] для этих данных может быть объявлен с помощью оператора ^ перед типом данных.

pascal
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 можно отслеживать, разыменовывая его путем добавления [символа] ^ к идентификатору. Вместо того, чтобы имеющегося у вас на руках адреса памяти, вы сможете посмотреть на содержимое памяти по этому адресу. Если это типизированный указатель, операции и синтаксис для этого типа корректны, например, операция присвоения в следующем примере.

pascal
21	// разыменование указателя, т.е. его отслеживание 
    22	start^.payload := 7;
    23	
    24	dispose(start);
    25end.

Однако попытка отследить [[Nil/ru|nil'евой]] указатель приведет к ошибке времени выполнения (RTE 216 “general protection fault”). В такой ситуации условиеnot assigned(start) в строке 15 предназначено для отлова [этой коллизии].

См.также

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.

Revision 6, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.