schumacher a écrit :
ok donc 2 raisons pour le choix par adresse :
- on récupère le résultat en sortie
- à chaque passage la valeur est modifiée donc faut que ça soit pas adresse sinon ça irait pas
daccord pour les 2 points?
merci bcp
|
non
Ca dépend si tu veux que la fonction/procédure appelée puisse modifier directement la valeur de ta variable.
Si tu veux seulement qu'elle utilise la valeur mais sans la modifier, tu la passe par valeur. Si tu veux qu'elle modifie la variable, tu passes par adresse.
Par exemple, pour une fonction qui doublerait une variable :
1er cas :
A = 3
double(A)
echo "La nouvelle valeur de A est " . A // affiche 6
Dans ce cas, A doit être passée par adresse car tu veux que la fonction "double" modifie directement la valeur de A.
2ème cas :
A = 3
B = double(A)
echo "A vaut encore " . A // affiche 3 car A n'est pas modifiée
echo "B vaut " . B // affiche 6
Ici, tu ne veux pas que "double" puisse modifier A, tu la passes par valeur.
L'avantage, c'est que "double" ne peut pas modifier A, même si, en interne, rien ne l'empêche de faire quelque chose comme "A = A * 2". En passant par valeur, la fonction "double" travaille sur une copie de A, ce qui évite tout effet de bord.
Message édité par mrbebert le 29-12-2002 à 18:37:14