Quelle est la différence entre un appel par valeur et un appel par adresse

Table des matières:

Anonim

Les différence principale entre l'appel par valeur et l'appel par adresse est que, en appel par valeur, les valeurs des paramètres réels sont copiées dans les paramètres formels de la fonction tandis qu'en appel par adresse, les adresses des paramètres réels sont copiées dans le paramètre formel de la fonction.

Une fonction est un ensemble d'instructions qui exécute une certaine tâche plusieurs fois. Plutôt que d'écrire toutes les instructions du programme dans la méthode main, nous pouvons diviser le programme en plusieurs fonctions et les appeler si nécessaire. De plus, cela rend le programme réutilisable et plus facile à lire. Il existe deux types d'arguments liés aux fonctions: les paramètres réels et formels. Les paramètres réels sont les valeurs qui passent à la fonction lors de son appel tandis que les paramètres formels sont la variable à l'intérieur des fonctions qui reçoivent des valeurs lors de l'appel de la fonction. Deux méthodes pour appeler une fonction dans les langages de programmation tels que "C" sont l'appel par valeur et l'appel par adresse.

Appel par valeur, Appel par adresse, Fonctions

Qu'est-ce que l'appel par valeur

Une fonction exécute la tâche définie et renvoie la réponse. Si le type de retour est void, il exécutera la tâche et ne retournera aucune valeur. Dans l'appel par valeur, les arguments réels sont copiés dans les paramètres formels de la fonction. La fonction utilise les valeurs des paramètres formels, pas les paramètres réels. Par conséquent, les valeurs d'origine ne changent pas. Un exemple est le suivant.

Figure 1: Programme avec appel par valeur

Dans l'exemple ci-dessus, il y a deux valeurs entières dans la méthode principale comme « a » et « b ». La fonction swap obtient ces deux valeurs. À l'intérieur de la fonction, la valeur « a » est copiée dans x et la valeur b est copiée dans y. Ainsi, x vaut 10 et y vaut 20. À l'intérieur de la fonction, la variable temp permet d'échanger ces deux valeurs. Maintenant, x vaut 20 et y vaut 10. Après avoir exécuté la fonction, le contrôle revient à la fonction principale. Lors de l'impression de 'a' et 'b', il imprime les valeurs d'origine, c'est-à-dire 10 pour 'a' et 20 pour 'b'. Il s'agit donc d'un appel par valeur. Dans ce cas, la valeur réelle ne change pas. Mais, le changement ne se reflète qu'à l'intérieur de la fonction.

Qu'est-ce que l'appel par adresse

Un autre nom pour l'appel par adresse est appel par pointeurs. La méthode d'appel par adresse copie les adresses des arguments dans des paramètres formels. La fonction utilise les adresses pour accéder aux valeurs réelles. Par conséquent, les modifications apportées à l'intérieur de la fonction se reflètent dans les valeurs d'origine. Un exemple est le suivant.

Figure 2: Programme avec appel par adresse

Dans l'exemple ci-dessus, il y a deux nombres entiers dans le programme principal comme « a » et « b ». Les adresses de 'a' et 'b' passent à la fonction. La fonction obtient ces adresses. La variable temp permet d'échanger les deux valeurs. Comme la fonction opère sur les valeurs réelles en utilisant les adresses, les changements à l'intérieur de la fonction sont visibles dans le programme principal. Par conséquent, même si les valeurs réelles "a" et "b" sont 10 et 20, maintenant la valeur "a" est 20 et la valeur "b" est 10.

Différence entre l'appel par valeur et l'appel par adresse

Définition

L'appel par valeur est un moyen de passer des arguments à une fonction en copiant les valeurs réelles des arguments dans les paramètres formels de la fonction tandis que l'appel par pointeur est un moyen de passer des arguments à une fonction en copiant les adresses des arguments dans les paramètres formels de la fonction.

Fonctionnalité

Dans l'appel par valeur, les valeurs des paramètres réels sont copiées dans les paramètres formels de la fonction. Cependant, dans l'appel par adresse, les adresses des paramètres réels sont copiées dans le paramètre formel de la fonction. Ainsi, la fonctionnalité est la principale différence entre l'appel par valeur et l'appel par adresse.

Effet sur les valeurs d'origine

Une autre différence majeure entre l'appel par valeur et l'appel par adresse est leur effet sur les valeurs d'origine. L'appel par valeur n'affecte pas les valeurs d'origine alors que l'appel par adresse affecte les valeurs d'origine.

Conclusion

le différence principale entre l'appel par valeur et l'appel par adresse est que, dans l'appel par valeur, les valeurs des paramètres réels sont copiées dans les paramètres formels de la fonction tandis que dans l'appel par adresse, les adresses des paramètres réels sont copiées dans le paramètre formel. de la fonction. En bref, l'appel par valeur ne modifie pas la valeur d'origine tandis que l'appel par adresse modifie les valeurs d'origine.

Référence:

1. « Fonctions C ». Www.tutorialspoint.com, Point de tutoriels, disponible ici.

Quelle est la différence entre un appel par valeur et un appel par adresse