On va considérer que "statique" c'est ce qui est alloué en mémoire sans pouvoir l'effacer durant l'exécution du programme.
Et "dynamique" c'est ce que l'on peut allouer et libérer à la volée.
Ainsi, une variable basique est statique : une fois définie, impossible de l'effacer. Or, il y a des variables qui sont dynamiques : c'est le cas des paramètres d'une procédure.
Ici Alpha est statique et Beta est dynamique.
Code : Tout sélectionner
Structure UnEntier
I.I
EndStructure
Procedure Proc(*Gamma.INTEGER, *Yankee.UnEntier)
*Gamma\I = 13
*Yankee\I = 27
EndProcedure
Define A.I, B.I
Proc(@A, @B)
Debug A
Debug B
Les pointeurs *Gamma et *Yankee sont dynamiques : ils vont servir durant l'exécution de la procédure puis être supprimés.
Tu noteras que l'écriture de 13 et 27 s'écrit pareillement (avec un \I ).
Ceci parce qu'en natif, il y a un ensemble de structures prédéfinies. Notamment, celle-là :
Au passage, il y en a pour tous les types de variable :
Code : Tout sélectionner
Structure FLOAT
F.F
EndStructure
Structure DOUBLE
D.D
EndStructure
Structure LONG
L.L
EndStructure
Structure BYTE
B.B
EndStructure
Structure QUAD
Q.Q
EndStructure
Structure STRING
S.S
EndStructure
; Etc...
Aussi, rien ne t'empêche de changer de nom de membre à ta structure.
Code : Tout sélectionner
Structure UnEntier
Solo.I
EndStructure
Procedure Proc(*Gamma.INTEGER, *Yankee.UnEntier)
*Gamma\I = 13
*Yankee\Solo = 27
EndProcedure
Define A.I, B.I
Proc(@A, @B)
Debug A
Debug B
Ici, c'est le même exemple mais avec "Solo" (ou "Pif", "paf", etc...) à la place de "I".