Il existe plusieurs manières d'envoyer des données (ou des variables) comme argument à une fonction. Deux des plus courants sont le passage par valeur et le passage par référence. Le passage par référence permet à une fonction de modifier une variable sans créer de copie. Nous devons déclarer des variables de référence. L'emplacement mémoire de la variable et du paramètre transmis est le même. Par conséquent, toute modification apportée au paramètre se reflète également dans la variable à l’intérieur de sa fonction parent. Cet article se concentre sur la manière de transmettre des variables par référence en C++.
Qu'est-ce qu'un passage par référence ?
Lorsqu'une variable est passée comme référence à une fonction, l'adresse de la variable est stockée dans une variable pointeur à l'intérieur de la fonction. Par conséquent, la variable à l’intérieur de la fonction est un alias pour la variable transmise. Par conséquent, toutes les opérations effectuées sur la variable à l’intérieur de la fonction seront également reflétées dans la fonction appelante.
- Cette capacité à refléter les changements pourrait renvoyer plus d'une valeur par une fonction.
- De plus, une fonction void pourrait techniquement renvoyer des valeurs en utilisant cette méthode.
Le & L’opérateur (adresse de) désigne les valeurs transmises par passage par référence dans une fonction. Vous trouverez ci-dessous le programme C++ pour implémenter le passage par référence :
C++
// C++ program to implement> // pass-by-reference> #include> using> namespace> std;> > void> f(>int> & x)> {> >x--;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(a);> >cout << a << endl;> }> |
>
c
>Sortir
5 4>
Explication:
- Premièrement, une fonction est définie avec le type de données de retour void et prend une valeur par référence (comme indiqué par le & signe d'adresse dans les paramètres formels).
- La fonction décrémente la valeur de son paramètre formel de 1.
- Après quoi, à l’intérieur de la fonction principale, une variable entière nommée un est initialisé avec la valeur 5.
- La valeur de « a » est imprimée sur la console. La fonction f() est appelée et la variable est passée en argument.
- À l’intérieur de la fonction, la valeur de la variable est décrémentée de 1.
- Au retour de la fonction, la valeur de la variable est à nouveau affichée, qui s'est avérée être inférieure de 1 à la valeur d'origine.
Par conséquent, les modifications apportées à une variable transmise par référence à une fonction sont reflétées dans la fonction appelante.
Fonction d'échange à l'aide de Pass-By-Reference
La fonction swap échange les valeurs des deux variables qu'elle reçoit en arguments. Vous trouverez ci-dessous le programme C++ permettant d'échanger les valeurs de deux variables à l'aide du passage par référence.
C++
// C++ program to swap the values> // of two variables using> // pass-by-reference> #include> > // Prototype of the function> void> swap(>int> &,>int> &);> > // Driver code> int> main()> {> >int> x, y;> > >// Inputting two variables> >printf>(>'Enter the value of x and y
'>);> >scanf>(>'%d%d'>, &x, &y);> > >// Displaying their values before swapping> >printf>(>'Before Swapping
x = %d
y = %d
'>,> >x, y);> > >// Calling the function & sending variable> >// values as argument> >swap(x, y);> > >// Displaying their values after swapping> >printf>(>'After Swapping
x = %d
y = %d
'>,> >x, y);> >return> 0;> }> > // Function uses pass by reference method> // to swap passed variable values> void> swap(>int> &a,>int> &b)> {> >int> temp;> > >temp = b;> >b = a;> >a = temp;> }> |
>
>
Sortir:
Explication:
- Tout d'abord, le prototype de fonction est défini (facultatif si la fonction est définie avant la fonction principale).
- À l’intérieur de la fonction principale, les valeurs des deux variables sont prises en entrée par l’utilisateur.
- Les valeurs avant d'appeler la fonction swap sont imprimées sur la console.
- Après quoi, les valeurs sont transmises en argument à la fonction swap.
- La fonction swap utilise l'appel par référence et contient le code pour échanger les deux variables.
- A la fin de la fonction, la valeur des deux variables est affichée dans la fonction principale (après l'appel à swap).
- Les valeurs échangées sont affichées à l'écran.
Passer par référence avec des pointeurs
Il est également possible de transmettre l'adresse de la variable depuis la fonction appelante et de l'utiliser comme pointeur à l'intérieur de la fonction appelée. Cela permet un peu plus explicitement le changement des valeurs des variables dans la fonction.
Vous trouverez ci-dessous le programme C++ pour implémenter le passage par référence avec des pointeurs :
C++
// C++ program to implement> // pass-by-reference with> // pointers> #include> using> namespace> std;> > void> f(>int> *x)> {> >*x = *x - 1;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(&a);> >cout << a << endl;> }> |
logique du premier ordre
>
>Sortir
5 4>
Explication:
- Premièrement, une fonction est définie avec le type de données de retour void et prend la valeur sous forme de pointeurs (comme indiqué par le * astérisque connectez-vous dans les paramètres formels).
- La fonction décrémente la valeur de son paramètre formel de 1.
- Après quoi, à l’intérieur de la fonction principale, une variable entière nommée « a » est initialisée avec la valeur 5.
- Ensuite, cette valeur est affichée. La fonction est appelée et l'adresse de la variable est passée en argument.
- À l’intérieur de la fonction, la valeur de la variable pointeur est décrémentée de 1.
- Au retour de la fonction, la valeur de la variable est à nouveau affichée, qui s'est avérée être inférieure de 1 à la valeur d'origine.