{ File: punt.pas } { Scopo: esempi base su puntatori } program ProvaPuntatori; type PuntatoreAIntero = ^integer; var pi, pj : PuntatoreAIntero; procedure CambiaIntero (p: PuntatoreAIntero); begin p^ := -222 end; { CambiaIntero } procedure AllocaIntero (var q: PuntatoreAIntero); begin new(q); q^ := -333 end; { AllocaIntero } begin { ProvaPuntatori } new(pi); { allocazione dinamica di memoria } pi^ := 150; { ora pi^ ha un valore significativo } pj := pi; { pi e pj PUNTANO ALLA STESSA CELLA DI MEMORIA } dispose(pj); { deallocazione di pj, E QUINDI ANCHE DI pi } new(pi); { allocazione dinamica di memoria } pi^ := 4000; { ora pi^ ha di nuovo un valore significativo } new(pj); { allocazione dinamica di memoria } pj^ := pi^; { le celle contengono lo stesso valore } new(pj); { ERRORE METODOLOGICO: HO PERSO UNA CELLA DI MEMORIA } CambiaIntero(pi); { pi non cambia, ma pi^ si } dispose(pi); AllocaIntero(pi); { pi viene moficato } end. { ProvaPuntatori }