^/ru

From Free Pascal wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

^

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

Для любого типа данных тип 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'евой указатель приведет к ошибке времени выполнения (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

<> (не равно)  •  <= (less than or equal)  •  := (присвоить)  •  >= (greater than or equal)

 •  >< (symmetric difference)  •  // (double slash)