next up previous contents
Next: Pointeurs sur les tableaux Up: La gestion dynamique et Previous: La gestion dynamique et   Contents

Présentation de la notion de pointeur

       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_int
La déclaration :
 
       INTEGER, POINTER :: ptr1, ptr2
précise que $ ptr1$ (resp. $ ptr2$) est un pointeur sur un entier. C'est-à-dire qu'il pourra être associé à un entier. Notez bien que $ ptr1$ n'est pas un entier.

La déclaration :

 
       INTEGER, TARGET  :: n, p
précise que les deux entiers sont des cibles c-à-d succeptibles d'être associés à un pointeur.

La déclaration :

 
       ptr1 => n
       ptr1 => p
signifie que $ ptr1$ est ascocié à $ n$ et $ ptr2$ est ascocié à $ p$
 
       print*,n, p, ptr1, ptr2
donne $ 10$, $ 20$, $ 10$, $ 20$
 
       ptr1 = 25
       ptr2 = ptr2 +1
signifie que l'entier associé à $ ptr1$ i.e $ n$ recoit $ 25$ et que l'entier associé à $ ptr2$ est incrémenté de $ 1$
 
       print*,n, p, ptr1, ptr2
donne $ 25$, $ 21$, $ 25$, $ 21$
 
       ptr1 = ptr2
signifie que l'entier associé à $ ptr1$ recoit l'entier associé à $ ptr2$
 
       print*,n, p, ptr1, ptr2
donne $ 21$, $ 21$, $ 21$, $ 21$

Notez la différence avec l'instruction suivante

 
       ptr1 => ptr2
signifie que $ ptr1$ est associé au pointeur $ ptr2$ qui est lui même est associé à $ p$ et $ n$ n'est plus associé
 
       ptr1 = ptr1 + 5 
       print*,n, p, ptr1, ptr2
donne $ 21$, $ 26$, $ 26$, $ 26$



Subsections

Mazen Saad 2002-12-12