Tâche
Écrivez une procédure qui échange les valeurs de deux variables.
Les particularités de cette tâche sont que nous avons besoin que les modifications apportées à la procédure soient connues du programme appelant.
Essayons d'écrire la procédure comme ceci :
void Swap ( int a, int b ) // avec une telle description des paramètres de la procédure,
{ // les valeurs des arguments (x et y) seront copiées,
entier c ; // les variables a et b sont des variables indépendantes non liées à x et y
c = un ; un = b ; b=c ;
}
principal()
{
entier x=1, y=2 ;
Échange(x, y); // les valeurs des variables x et y (arguments) sont copiées dans les paramètres a et b
cout << "x=" << x<< ", y=" << y; //x=1, y=2
}
Si vous exécutez ce programme, vous pouvez voir que les valeurs des variables x
et y
n'ont pas changé. Pour que les paramètres modifient les valeurs des arguments, vous devez utiliser passage de données par référence. Pour ce faire, après le nom du type de données dans l'en-tête du sous-programme, vous devez mettre le signe & code> ("esperluette").
void Swap ( int & a, int & b ) // maintenant les variables a et b obtiennent les adresses des variables x et y en mémoire
{
entier c ;
c = un ; un = b ; b=c ;
}
Utilisation : Si vous passez un argument par référence, alors seul le nom de la variable (PAS un nombre et PAS une expression arithmétique) peut être à cet endroit lors de l'appel de la procédure !< br />
N'appelez PAS une procédure comme celle-ci :
Échange(x, 4 );
Échange(5+x, y);