Puntatori - Cenni Nicola Fanizzi Corso di Programmazione C.d.L. in Informatica DIB - Università degli Studi di Bari
2 Puntatori n Meccanismo di implementazione del riferimento indiretto ad una risorsa n Utili anche come meccanismo esplicito di manipolazione di risorse dinamiche: dimensione/numerosità della/e risorsa/e puntata decisa a run-time puntatorerisorsa
3 Puntatori Dichiarazione Pascal n Tipo puntatore a variabili di tipo base: type... = ^ = ^... n Variabile di tipo (anonimo) puntatore a variabili di tipo base: var... : ^ : ^...
4 Puntatori Uso accesso indiretto mediante dereferenziazione: uso di p^ per riferirsi alla variabile puntata assegnazione ad una variabile dello stesso tipo puntatore p1 := p2 o del valore speciale puntatore nullo: nil confronto p1 = p2 (puntano alla stessa variabile ?) n gestione memoria dinamica: procedure predefinite –new(p) allocazione variabili dinamiche di tipo base e puntamento da parte del puntatore p –dispose(p) rilascio memoria allocata dinamicamente puntata da p
5 Puntatori Riferimento indiretto a variabili statiche var k: integer; pk: ^integer; begin k := 3; pk (* dialetti pascal *) write(pk^); (* stampa 3 *) pk^ := pk^ + 5; write(pk^); (* stampa 8 *) end
6 Puntatori in Pascal Allocazione dinamica var p: ^integer; … new(p); p^ := 3; … dispose(p);
7 Puntatori in Pascal Allocazione dinamica - Esempio program Puntatori; type pcella = ^cella; cella = record num:integer; pun:pcella end; vart,e: pcella; begin {creazione elemento} new(t); t^.num := 1; t^.pun := nil; {inserzione} new(e); e^.num := 2; e^.pun := nil; t^.pun := e; {inserzione in testa} new(e); e^.num := 3; e^.pun := t; t := e; {distruzione di elemento} e := t^.pun^.pun; dispose(t^.pun); t^.pun := e end. t (1,-) t (1, ) (2,-) t (3, ) (1, ) (2,-) t (3, ) (2,-)