De nombreux langages de programmation utilisent des fonctions. Une fonction est un ensemble d'instructions permettant d'exécuter une tâche spécifique. Le code principal peut être divisé en plusieurs fonctions et appelées-les. Il existe deux manières d’appeler une fonction, comme appel par valeur et appel par référence. Dans la méthode d'appel par valeur, des copies de variables sont transmises à la fonction. S'il y a un changement dans la valeur de la fonction, cela ne change pas la valeur d'origine. Dans appel par référence, les modifications de la variable à l'intérieur de la fonction reflètent la valeur d'origine. le différence clé entre appel par valeur et appel par référence est que, en appel par valeur, les copies des variables sont transmises à la fonction et en appel par référence, les adresses des variables sont transmises à la fonction. Cet article explique la différence entre appel par valeur et appel par référence.
1. Vue d'ensemble et différence clé
2. Quel est l'appel par valeur
3. Quel est l'appel par référence
4. Similarités entre appel par valeur et appel par référence
5. Comparaison côte à côte - Appel par valeur vs Appel par référence sous forme de tableau
6. Résumé
Dans call by value, des copies de variables sont transmises à la fonction. La fonction peut changer cette valeur copiée mais elle ne change pas la valeur d'origine. Ce concept peut facilement être compris en échangeant le programme à deux chiffres. Reportez-vous au programme C ci-dessous écrit à l'aide de l'environnement Code Blocks.
Figure 01: Programme pour échanger deux numéros
Selon le programme indiqué ci-dessous, la variable "a" a la valeur 20 et la variable "b" la valeur 30. Lors de l'appel de la fonction swap (a, b), ces deux valeurs sont transmises à la fonction swap. Dans la fonction de permutation, "a" est copié dans "x" et "b" dans "y". Maintenant, "x" a la valeur 20 et "y" a la valeur 30. Les deux valeurs sont échangées à l'aide de la variable temp. Lors de l'impression des valeurs de "x" et "y" à l'intérieur de cette fonction d'échange, la sortie donnera 30 pour "x" et 20 pour "y". Lorsque l'exécution de la fonction d'échange est terminée, le contrôle revient à la fonction principale. Lors de l'impression des valeurs de 'a' et 'b' dans la fonction principale, les résultats seront les valeurs d'origine. Ils sont 20 pour 'a' et 30 pour 'b'. Les modifications apportées à l'aide de la fonction d'échange ne sont pas reflétées dans le programme principal.
Figure 02: Résultats du programme d'échange
'x' et 'y' dans la fonction swap ont les valeurs échangées qui sont 30 et 20 mais ces valeurs ne peuvent pas être utilisées dans le programme principal. Même si 'x' et 'y' ont des valeurs échangées, ce sont des variables locales pour la fonction d'échange et ne sont pas accessibles par la fonction principale. Pour éviter ce problème, appel par référence peut être utilisé.
Dans cette méthode, les adresses des variables sont envoyées à la fonction. Reportez-vous au programme C ci-dessous écrit à l'aide de l'environnement Code Blocks.
Figure 03: Échange de deux numéros à l'aide de pointeurs
Selon l'exemple donné ci-dessous, la valeur de 'a' est 20 et la valeur de 'b' est 30. Au lieu de transmettre des copies de 'a' et 'b', le programmeur peut envoyer les adresses de 'a' et 'b 'en utilisant la fonction, swap (& a, & b).
Figure 04: Sortie du programme d'échange à l'aide de pointeurs
Dans le swap, la fonction doit utiliser des pointeurs car les adresses sont transmises et ces adresses doivent être conservées par des pointeurs. Dans la fonction, l'adresse de "a" est copiée dans "x" et l'adresse de "b" est copiée dans "y". En utilisant la variable temp, les valeurs 'x' et 'y' sont permutées. Dans cet appel par la méthode de référence, les modifications à l'intérieur de la fonction swap sont reflétées dans le programme principal. Imprimer les valeurs de 'a' et 'b' dans le menu principal donnera les valeurs permutées. Maintenant, la sortie de 'a' est 30 et 'b' est 20. Comme la fonction prend l'adresse des variables, les modifications apportées à l'intérieur de la fonction affectent les valeurs d'origine..
Appel par valeur vs appel par référence | |
Dans l'appel par valeur, des copies des variables sont passées dans la fonction afin que les modifications apportées à l'intérieur de la fonction ne modifient pas la valeur d'origine.. | Dans appel par référence, l'adresse des variables est transmise à la fonction. Par conséquent, les modifications apportées aux variables à l'intérieur de la fonction modifieront la valeur d'origine.. |
Modification de la valeur | |
En appel par valeur, la valeur d'origine ne change pas. | Dans appel par référence, les valeurs d'origine changent. |
Appel par valeur et appel par référence sont des méthodes permettant d’appeler la fonction. La différence entre appel par valeur et appel par référence est que, dans l'appel par valeur, les copies des variables sont transmises à la fonction et dans l'appel par référence, les adresses des variables sont transmises à la fonction. Utiliser appel par valeur ou appel par référence dépend de la tâche à exécuter.
Vous pouvez télécharger la version PDF de cet article et l'utiliser à des fins hors ligne, conformément à la note de citation. Veuillez télécharger la version PDF ici Différence entre appel par valeur et appel par référence
1.Jaiswal, Haresh. "11 Appel par valeur vs Appel par référence." Youtube, YouTube, le 24 décembre 2015. Disponible ici