Appel par référence vs appel par valeur : différence et comparaison

Les fonctions peuvent être appelées de deux manières dans un programme. Une méthode est par appel par référence, et la méthode suivante est par appel par valeur. Ces méthodes peuvent être différenciées en fonction du type de valeurs transmises aux paramètres.

Les paramètres qui y sont utilisés sont appelés paramètres réels. Ils sont utilisés dans de nombreux langages de programmation tels que C, C++ et Java.

Faits marquants

  1. L'appel par référence transmet l'adresse mémoire d'une variable à une fonction, tandis que l'appel par valeur envoie une copie de la valeur de la variable.
  2. Avec l'appel par référence, les modifications apportées au sein d'une fonction affectent directement la variable d'origine, tandis que l'appel par valeur laisse la variable d'origine inchangée.
  3. L'appel par référence est plus économe en mémoire que l'appel par valeur, mais il peut entraîner des effets secondaires imprévus s'il n'est pas géré avec soin.

Appel par référence vs appel par valeur

Le vinaigre blanc, utilisé pour le nettoyage ou la cuisine, est fabriqué en faisant fermenter de l'alcool distillé, ce qui donne un liquide clair et au goût piquant. Le vinaigre de cidre de pomme est fabriqué en fermentant les sucres des pommes et a un goût plus doux et légèrement sucré, utilisé dans les vinaigrettes et les marinades.

Appel par référence vs appel par valeur

La méthode d'appel par référence est utilisée pour accéder à l'argument réel qui est l'appel de fonction. Cela signifie que les modifications ne sont apportées au paramètre qu'après le passage de l'argument.

Il utilise la même allocation de mémoire que celle utilisée dans les paramètres réels. Lorsqu'il appelle une fonction, au lieu de copier les variables, l'adresse elle-même est utilisée dans l'appel par des références.

L'appel par valeur est un sous-programme qui transmet les données réelles des paramètres utilisés dans le sous-programme.

Dans cette méthode, lorsque vous appelez une fonction, vous transmettez la valeur à la variable des arguments de la fonction appelée afin que la fonction appelée travaille sur la valeur. Cette modification ne sera pas reflétée dans la fonction appelée.

Tableau de comparaison

Paramètres de comparaisonAppel par référenceAppel par valeur
VariableLa variable est passée.Une copie de la variable est transmise.
Valeur variableLes modifications apportées affecteront la fonction à l'extérieur.Les modifications apportées n'affecteront pas la fonction à l'extérieur.
Valeur d'origineIl est modifié.Il n'est pas modifié.
SécuritéLes arguments réels ne sont pas sûrs.Les arguments réels sont sûrs.
DéfinitionIl utilise une variable elle-même pour passer.Il utilise la copie de la variable pour le passage.

Qu'est-ce que l'appel par référence ?

C'est une méthode utilisée pour passer des arguments à une fonction. Pour stocker l'adresse des variables, des variables de pointeur sont utilisées. Dans cette méthode, les arguments réels ne sont pas sûrs.

Lisez aussi:  Truecaller vs Truecaller Premium : différence et comparaison

Des modifications accidentelles peuvent être faites. Il est important de manipuler les opérations d'argument avec soin. Cela permet d'éviter les changements effectués par erreur.

Il ne créera pas de données en double car il ne contient qu'une seule valeur afin qu'il puisse enregistrer espace mémoire. Si une personne lit le code, elle ne pourra pas savoir si les valeurs modifiées dans ce code ne le sont pas.

Dans cette méthode, une garantie à vie est un gros problème. Cela deviendra un danger si vous travaillez avec des programmes multithreads et des lambdas. Pour déclarer un appel par référence, vous devez passer une adresse.

Appel par référence quand il s'agit de programmation en C. Il accède directement aux éléments de données et exécute les fonctions sur ceux-ci. Mais vous devez être prudent car des pointeurs y sont impliqués.

Si vous connaissez le statut particulier de la donnée, appelez par référence la méthode id perfect. Modifier une copie des données ne fera rien d'utile

L'appel par référence comporte des dangers que l'appel par valeur n'a pas. Vous pouvez par inadvertance réaffecter une valeur à un pointeur et la perdre en mémoire.

Qu'est-ce que l'appel par valeur ?

Dans cette méthode, les modifications apportées à l'intérieur de la fonction du paramètre n'auront aucun effet sur l'argument. Le programme d'échange agit comme le meilleur exemple de programme d'appel par valeur.

Il explique qu'aucune modification n'est apportée à la valeur même si elle est modifiée à l'intérieur de la fonction. Dans Java, la méthode d'appel par valeur signifie appeler la méthode avec son paramètre comme valeur.

Dans cette méthode, les paramètres sont stockés dans différents emplacements de mémoire. Si vous apportez une modification à l'intérieur du paramètre d'emplacement réel de l'appelant ne sera pas affecté.

Cette méthode est la meilleure car la valeur d'origine n'est pas modifiée. Mais vous ne pouvez pas apporter de modifications aux variables réelles. Les arguments réels seront en sécurité dans cette méthode car vous ne pouvez pas apporter de modifications accidentellement. 

Lisez aussi:  Substack vs Squarespace : différence et comparaison

Cette méthode conserves les données car elles ne modifient pas la variable d'origine. Ici, les arguments sont des variables. La modification d'une variable dans le corps d'une fonction n'est pas directe. Les expressions complexes peuvent parfois fonctionner comme arguments.

Il n'est pas efficace en mémoire car deux copies sont créées pour la même variable. Si la taille des données est importante, la méthode d'appel par valeur ne les traitera pas. Dans ce cas, les programmeurs doivent opter pour la méthode d'appel par référence. 

Principales différences entre l'appel par référence et l'appel par valeur

  1. La valeur d'origine est modifiée dans l'appel par référence. Par contre, dans l'appel par valeur la valeur d'origine n'est pas modifiée.
  2. L'appel par référence est pris en charge par les langages de programmation, mais ce n'est pas le cas par défaut. D'autre part, l'appel par valeur fonctionne par défaut dans les langages de programmation.
  3. Dans Appel par référence, toute modification apportée à la variable affectera également la variable en dehors de la fonction. En revanche, dans l'appel par valeur, toute modification apportée à la variable n'affectera pas la variable en dehors de la fonction.
  4. L'appel par référence vous permet d'apporter des modifications à la valeur de la variable. D'autre part, l'appel par valeur ne vous permettra pas d'apporter des modifications.
  5. En appel par référence, une adresse de la valeur sera passée. Mais dans l'appel par référence, une copie de la valeur sera passée. 
Bibliographie
  1. https://www.jstor.org/stable/3857812
  2. ftp://prog.vub.ac.be/education/EMOOSE/ReuseSlides/merge-papers/Jackson&al1994-semanticDiff.pdf

Dernière mise à jour : 22 juillet 2023

point 1
Une requête?

J'ai mis tellement d'efforts à écrire ce billet de blog pour vous apporter de la valeur. Cela me sera très utile, si vous envisagez de le partager sur les réseaux sociaux ou avec vos amis/famille. LE PARTAGE C'EST ♥️

Laisser un commentaire

Vous voulez enregistrer cet article pour plus tard ? Cliquez sur le cœur dans le coin inférieur droit pour enregistrer dans votre propre boîte d'articles !