Pascal - Pasando punteros a subprogramas

Las variables de puntero se pueden pasar como parámetros en argumentos de función y procedimiento. Las variables de puntero se pueden pasar tanto como parámetros de valor como de variables; sin embargo, cuando se pasa como parámetros variables, el subprograma puede alterar inadvertidamente el valor del puntero, lo que producirá resultados extraños.

El siguiente programa ilustra cómo pasar el puntero a una función:

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.

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Here the pointer brings the value: 100