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.

364 Puntatori<br />

nome_puntatore => nome_target<br />

Quando la precedente istruzione è eseguita, l’indirizzo di memoria del target viene immagazzinato<br />

nel puntatore: da questo momento, ogni riferimento al puntatore avrà lo stesso effetto di<br />

un riferimento ai dati immagazzinati nel target.<br />

Se un puntatore già associato ad un target viene usato in una nuova istruzione di assegnazione,<br />

allora l’associazione con il primo target viene perduta, sostituita dalla nuova associazione.<br />

In una istruzione di assegnazione è anche possibile assegnare il valore di un puntatore ad<br />

un altro puntatore:<br />

puntatore1 => puntatore2<br />

Come effetto di questa istruzione, entrambi i puntatori punteranno direttamente ed indipendentemente<br />

allo stesso target. Se uno dei due puntatori viene successivamente associato ad un<br />

diverso target l’altro puntatore non sarà affetto da tale cambiamento. Tuttavia, se puntatore2<br />

viene deassociato anche puntatore1 assumerà lo stesso stato.<br />

A titolo di esempio si consideri il seguente insieme di istruzioni:<br />

REAL, TARGET :: x<br />

REAL, POINTER :: p1, p2<br />

x = 3.14<br />

p1 => x<br />

p2 => p1<br />

x = 2.72<br />

Se si esegue questo frammento di programma, sia p1 che p2 punteranno a x, per cui le istruzioni<br />

seguenti:<br />

WRITE(*,*) x<br />

WRITE(*,*) p1<br />

WRITE(*,*) p2<br />

forniranno tutte lo stesso risultato: 2.72. Se ora si apporta una piccola modifica alle righe<br />

precedenti:<br />

REAL, TARGET :: x, y<br />

REAL, POINTER :: p1, p2<br />

x = 3.14<br />

y = 2.72<br />

p1 => x<br />

p2 => y<br />

il nuovo valore di x e di p1 sarà 3.14 mentre il nuovo valore di y e p2 sarà 2.72. Se a questo<br />

punto si esegue l’istruzione di assegnazione:<br />

p2 = p1

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

Saved successfully!

Ooh no, something went wrong!