Pascal - Passando ponteiros para subprogramas

Variáveis ​​de ponteiro podem ser passadas como parâmetros em argumentos de função e procedimento. Variáveis ​​de ponteiro podem ser transmitidas como parâmetros de valor e variáveis; no entanto, quando passado como parâmetros variáveis, o subprograma pode alterar inadvertidamente o valor do ponteiro, o que levará a resultados estranhos.

O programa a seguir ilustra a passagem de um ponteiro para uma função -

program exPointertoFunctions;
type
   iptr = ^integer;

var
   i: integer;
   ptr: iptr;

function getNumber(p: iptr): integer;
var
   num: integer;

begin
   num:=100;
   p:= @num;
   getNumber:=p^;
   end; 

begin
   i := getNumber(ptr);
   
   writeln(' Here the pointer brings the value ', i);
end.

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

Here the pointer brings the value: 100