^/ru

From Free Pascal wiki

English (en) suomi (fi) русский (ru)

^

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

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


 1 program pointerDemo(input, output, stderr);
 2 
 3 type
 4 	listItem = record
 5 		payload: integer;
 6 		// следующий пункт по элементу списка
 7 		next: ^listItem;
 8 	end;
 9 
10 var
11 	start: ^listItem;
12 
13 begin
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);
25 end.

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

См.также

  • {$pointerMath off} запрещает использование указателей в арифметических выражениях
  • {$typedAddress on} в сочетании с оператором получения адреса @
  • {$modeSwitch autoDeref-} - автоматическое (тихое) разыменование типизированных указателей


navigation bar: topic: Pascal symbols
single characters

+ (плюс)  •  - (минус)  •  * (звездочка)  •  / (слеш)
= (равно)  •  > (больше чем)  •  < (меньше чем)
. (точка)  •  : (двоеточие)  •  ; (точка с запятой)
^ (hat)  •  @ (at)
$ (dollar sign)  •  & (ampersand)  •  # (hash)
' (single quote)

character pairs

<> (не равно)  •  := (присвоить)  •  >< (symmetric difference)  •  // (double slash)