pascal Указатель на переменную, пример изменения значения по указателю. Паскаль

var
  a, b, c: integer; // глобальные переменные
  p: ^integer; // Тип: указатель на integer
 
begin
 
 a := 5;
 writeln('a= ', a);
 // f1(a);
 p := @a; { получаем указатель на переменную a 
(на область памяти, где лежит её значение) }
 writeln('p= ', p^); {смотрим что лежит в области памяти,
 на которую указывает указатель  p }
 
 p^ := 9; // Запись "по ссылке"
 writeln('p= ', p^);
 writeln('a= ', a); // значение изменилось тоже, хотя мы не меняли его явно
 
 readln();
end.

-- работает в freepascal (Lazarus). Похожим образом работает и передача переменных по ссылке в подпрограмму, где используя другое имя внутри подпрограммы можно изменить исходное значение снаружи.

Ссылки:

Key Words for FKN + antitotal forum (CS VSU):