guida

Guida Pascal - 37. I puntatori

37. I puntatori

I Puntatori sono un tipo di dato che consentono di allocare e di togliere lo spazio di memoria assegnato ad una variabile.
I puntatori contengono l'indirizzo in cui un determinato dato è reperibile, vengono utilizzati per la gestione dinamica della memoria.
Le variabili con tipo predefinito hanno uno spazio di memoria riservato ben preciso 8 bit 32 bit ecc... con i puntatori invece lo spazio di memoria non è fisso e viene determinato a run-time.
Come tutte le variabili i puntatori possono essere di tipo integer, real, char, string ecc...
Le sintassi per dichiarare un puntatore sono le seguenti:

type
PuntatoreInteger=^Integer;
var nome_variabile:PuntatoreInteger;
var nome_variabile:^Integer;

I puntatori vanno inizializzati con la procedura New(p:pointer). Tale procedura alloca un'area di memoria grande quanto un valore dello stesso tipo del puntatore.
Esempio:

program Puntatori_1;
uses crt;
type PuntatoreInteger=^Integer;
var a:PuntatoreInteger;
begin
   new(a);
   a^:=50;
   writeln('La variabile a ha per indirizzo una cella contente',a^);
   readln;
end.

L'operatore ^ assegna un valore alla cella di memoria puntata dal puntatore. Quindi nell'esempio precedente il programma assegna alla cella di memoria puntata dal puntatore il valore 50.
Con l'operatore @ si ottiene invece l'indirizzo della cella di memoria di una variabile. Esempio:

program Puntatori_2;
uses crt;
var a,b:integer;
    c:^integer;
begin
   clrscr;
   new(c);
   a:=50;
   b:=100;
   c:=@a;
   writeln('La cella di memoria puntata da c contiene ',c^);
   c:=@b;
   writeln('La cella di memoria puntata da c contiene ',c^);
   readln;
end.