PROGRAM Ptr_int IMPLICIT NONE INTEGER, POINTER :: ptr1, ptr2 INTEGER, TARGET :: n, p n = 10 ; p = 20 ptr1 => n ptr1 => p print*,n, p, ptr1, ptr2 ptr1 = 25 ptr2 = ptr2 +1 print*,n, p, ptr1, ptr2 ptr1 = ptr2 print*,n, p, ptr1, ptr2 ptr1 => ptr2 ptr1 = ptr1 + 5 print*,n, p, ptr1, ptr2 END PROGRAM Ptr_intLa déclaration :
INTEGER, POINTER :: ptr1, ptr2précise que (resp. ) est un pointeur sur un entier. C'est-à-dire qu'il pourra être associé à un entier. Notez bien que n'est pas un entier.
La déclaration :
INTEGER, TARGET :: n, pprécise que les deux entiers sont des cibles c-à-d succeptibles d'être associés à un pointeur.
La déclaration :
ptr1 => n ptr1 => psignifie que est ascocié à et est ascocié à
print*,n, p, ptr1, ptr2donne , , ,
ptr1 = 25 ptr2 = ptr2 +1signifie que l'entier associé à i.e recoit et que l'entier associé à est incrémenté de
print*,n, p, ptr1, ptr2donne , , ,
ptr1 = ptr2signifie que l'entier associé à recoit l'entier associé à
print*,n, p, ptr1, ptr2donne , , ,
Notez la différence avec l'instruction suivante
ptr1 => ptr2signifie que est associé au pointeur qui est lui même est associé à et n'est plus associé
ptr1 = ptr1 + 5 print*,n, p, ptr1, ptr2donne , , ,