Passage par variable ou par valeur

Il y a deux méthodes pour passer des variables en paramètre dans une fonction: le passage par valeur et le passage par variable.

Passage par valeur:

La valeur de l’expression passée en paramètre est copiée dans une variable locale. C’est cette variable qui est utilisée pour faire les calculs dans la fonction appelée.
Si l’expression passée en paramètre est une variable, son contenu est copié dans la variable locale. Aucune modification de la variable locale dans la fonction appelée ne modifie la variable passée en paramètre, parce que ces modifications ne s’appliquent qu’à une copie de cette dernière.

Passage par variable:

La deuxième technique consiste à passer non plus la valeur des variables comme paramètre, mais à passer les variables elles-mêmes. Il n’y a donc plus de copie, plus de variable locale. Toute modification du paramètre dans la fonction appelée entraîne la modification de la variable passée en paramètre.

Avantages et inconvénients des deux méthodes:

Les passages par variables sont plus rapides et plus économes en mémoire que les passages par valeur, puisque les étapes de la création de la variable locale et la copie de la valeur ne sont pas faites. Il faut donc éviter les passages par valeur dans les cas d’appels récursifs de fonction ou de fonctions travaillant avec des grandes structures de données (matrices par exemple).
Les passages par valeurs permettent d’éviter de détruire par mégarde les variables passées en paramètre. Si l’on veut se prévenir de la destruction accidentelle des paramètres passés par variable, il faut utiliser des constantes. Le compilateur interdira alors toute modification de la variable dans la fonction appelée, ce qui peut parfois obliger cette fonction à réaliser des copies de travail en local.

Laisser des commentaires:

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :