bonjour
j'ai de probleme avec l'attribut pointeur.
Qu'est ce que un pointeur et a quoi sert?
comment le declarer et comment l'utilier?
quelle est la difference entre une variable ordinaire et une autre declarer avec pointeur?
merci pour vos aides
bonjour
j'ai de probleme avec l'attribut pointeur.
Qu'est ce que un pointeur et a quoi sert?
comment le declarer et comment l'utilier?
quelle est la difference entre une variable ordinaire et une autre declarer avec pointeur?
merci pour vos aides
Juste pour être certain qu'on se comprenne bien, il y a 3 types de pointeur en Fortran :
- Les vrais pointeurs Fortran
- Les pointeurs « C » de Fortran 2003
- Les pointeurs Cray rarement utilisés.
Je vais supposer que tu fais référence aux premiers.
Ils sont toujours (?) implantés par des types contenant l'adresse mémoire, le nombre de dimensions de l'objet, le nombre de lignes, de colonnes, ...
Une particularité des pointeur Fortran (par rapport à du C) est qu'on ne peut pas avoir de vecteur de pointeur. real, pointer :: Ptr(:) signifie pointeur à un vecteur, et non vecteur de pointeur (il faut vecteur d'un type contenant un pointeur pour émuler un vecteur de pointeur). On les déclare comme suit :
« type », pointer, dimension(:,:...) :: Ptr ou
« type », pointer :: Ptr(:,:...) ou
« type », pointer :: Ptr
par exemple :
real, pointer :: Ptr(:)
Ils sont assez près des allocatables. Tu peux faire un allocate sur un pointeur, mais il n'y a pas de deallocate automatique quand l'exécution sort du sous-programme où se trouve le pointeur. En Fortran 90 et 95, ils étaient très utilisés dans les types parce que les types ne pouvaient pas avoir de membres allocatables (permis depuis TRxxxxx - extension à F95 intégrée à F03).
Tu peux aussi faire pointer un pointeur sur une variable ou un autre pointeur.
Pointeur => Variable
Pointeur => Tableau
Lorsque le pointeur est associé à (pointe sur) un tableau, il ne pointe pas sur une case comme en C, mais sur toute la région associé :
Ptr => Tableau(2:4, 1:5)
Tu dois donc utiliser des indices pour référer à une case précise :
abc = Ptr(2,3), soit Tableau(3,3)
Pour pointer sur une variable, la variable doit cependant avoir l'attribut target (pour des raisons d'optimisation).
Le pointeur à pointeur est très utile pour gérer des listes liées, des arbres, ...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager