25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Capitolo 7<br />

Puntatori<br />

Oltre a consentire la dichiarazione di oggetti di tipi di dati intrinseci o di un tipo di dati definito<br />

dall’utente, il <strong>Fortran</strong> <strong>90</strong>/<strong>95</strong> prevede anche uno speciale tipo di oggetto che, contrariamente agli<br />

altri, non contiene un valore ma l’indirizzo di memoria di un’altra variabile il cui valore è quello<br />

effettivamente immagazzinato. Poiché questo tipo di variabile punta ad un’altra variabile, esso<br />

è chiamato puntatore, mentre la variabile a cui esso punta è detta target.<br />

In realtà, contrariamente a quanto avviene, ad esempio, nel il linguaggio C, i puntatori del<br />

<strong>Fortran</strong> sono semplicemente variabili definite con l’attributo POINTER e non rappresentano un<br />

tipo di dati distinto, per cui, in particolare, non è possibile alcuna aritmetica dei puntatori.<br />

Dato un puntatore, esempi di target validi sono:<br />

• Variabili dello stesso tipo del puntatore ed esplicitamente dichiarate con l’attributo TARGET.<br />

• Altri puntatori dello stesso tipo di quello dato.<br />

• Memoria dinamica allocata con il puntatore stesso.<br />

L’uso dei puntatori spesso fornisce una alternativa più flessibile all’uso degli allocatable array<br />

ed un efficiente strumento per creare e manipolare strutture dati dinamiche quali liste e alberi<br />

binari.<br />

I puntatori vengono usati soprattutto in quelle situazioni dove variabili ed array devono<br />

essere creati e distrutti ”dinamicamente” durante l’esecuzione di un programma e quando non<br />

sono noti, se non durante l’esecuzione stessa del programma, il numero e le dimensioni delle<br />

variabili di un dato tipo necessarie durante il run. Per questa ragione le variabili con attributo<br />

POINTER sono dette variabili dinamiche, per distinguerle dalle variabili tradizionali, dette statiche,<br />

le quali sono così chiamate perché il loro numero, il tipo e le dimensioni devono essere<br />

noti in fase di compilazione e restare inalterati durante l’intera esecuzione del programma.<br />

7.1 Dichiarazione di puntatori e target<br />

La forma generale delle istruzioni di dichiarazione di un puntatore e di un target sono le seguenti:<br />

361

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!