- Appel de Fonction
- La transmission des paramètres
- Surcharge de Fonction
- Surcharge d'Opération
- Description des Fonctions Externes
- Export de Fonctions
- Fonctions de Gestion d'Evènement
Passer des Paramètres
Il existe deux méthodes grâce auxquelles le langage machine peut passer des arguments à un sous-programme (fonction). La première méthode est d'envoyer un paramètre par valeur. Cette méthode copie la valeur de l'argument dans un paramètre formel de fonction. Tout changement dans ce paramètre dans la fonction n'a donc aucune influence sur l'argument correspondant de l'appel.
//+------------------------------------------------------------------+
|
La deuxième méthode est de passer par référence. Dans c cas, la référence à un paramètre (et pas sa valeur) est passée au paramètre d'une fonction. Dans la fonction, elle est utilisée pour se référer au paramètre actuel spécifié dans l'appel. Cela signifie qu'un changement du paramètre affectera l'argument utilisé pour appeler la fonction.
//+------------------------------------------------------------------+
|
MQL5 utilise les deux méthodes, avec une exception : les tableaux, les variables de type structure et les objets de classe sont toujours passés par référence. Pour interdire de changer les paramètres courants (les arguments passés à l'appel de la fonction), utilisez le spécificateur d'accès const. En cas de tentative de changer le contenu d'une variable déclarée avec le spécificateur const , le compilateur génèrera une erreur.
Note
Il est à noter que les paramètres sont passés à une fonction dans l'ordre inverse, c'est à dire que le dernier paramètre est d'abord calculé et passé, ensuite l'avant dernier, etc. le dernier paramètre calculé et passé est le premier situé après la parenthèse ouvrante.
Exemple :
void OnStart()
|
Dans le premier appel (voir l'exemple ci-dessus), la variable i est d'abord utilisée dans la concaténation des chaînes de caractères :
"Premier appel (i = "+string(i)+")" |
Ici, sa valeur ne change pas. La variable i est ensuite utilisée dans le calcul de l'élément a[i++] du tableau, c'est à dire lors de l'accès à l'élément du tableau avec l'indice i, la i variable est incrémentée. Et seulement après, le premier paramètre avec la valeur changée de la i variable est calculé.
Dans le deuxième appel, la même valeur de i (calculée dans la première phase de l'appel de la fonction) est utilisée lors du calcul des trois paramètres. La variable i n'est encore changée qu'après le calcul du premier paramètre.
Voir aussi
Portée de Visibilité et Durée de Vie des Variables, Surcharge, Fonctions Virtuelles, Polymorphisme