Dernière mise à jour le 27 juillet 2020

Arguments réels #

Les arguments qui sont mentionnés dans l’appel de fonction est connu comme l’argument réel. Par exemple :

func1(12, 23);

ici 12 et 23 sont des arguments réels.

Les arguments réels peuvent être des constantes, des variables, des expressions etc.

12
func1(a, b); // here actual arguments are variablefunc1(a + b, b + a); // here actual arguments are expression

Arguments formels #

Les arguments qui sont mentionnés dans la définition de la fonction sont appelés arguments formels. Les arguments formels sont très similaires aux variables locales à l’intérieur de la fonction. Tout comme les variables locales, les arguments formels sont détruits lorsque la fonction se termine.

1234
int factorial(int n){ // write logic here}

Ici n est l’argument formel. Choses à retenir sur les arguments réels et formels.

  1. L’ordre, le nombre et le type des arguments réels dans l’appel de la fonction doivent correspondre aux arguments formels de la fonction.
  2. S’il y a un désaccord de type entre les arguments réels et formels, alors le compilateur essaiera de convertir le type des arguments réels en arguments formels s’il est légal, Sinon, une valeur poubelle sera passée à l’argument formel.
  3. Les modifications apportées à l’argument formel n’affectent pas les arguments réels.

Le programme suivant démontre ce comportement.

 1 2 3 4 5 6 7 8 910111213141516171819202122232425
#include<stdio.h>void func_1(int);int main(){ int x = 10; printf("Before function call\n"); printf("x = %d\n", x); func_1(x); printf("After function call\n"); printf("x = %d\n", x); // signal to operating system program ran fine return 0;}void func_1(int a){ a += 1; a++; printf("\na = %d\n\n", a);}

Ici, la valeur de la variable x est 10 avant l’appel de la fonction func_1(), après l’appel de func_1(), la valeur de x à l’intérieur de main() est toujours 10. Les changements effectués à l’intérieur de la fonction func_1() n’affectent pas la valeur de x. Cela se produit parce que lorsque nous passons des valeurs aux fonctions, une copie de la valeur est faite et cette copie est passée aux arguments formels. Par conséquent, les arguments formels travaillent sur une copie de la valeur originale, et non sur la valeur originale elle-même, c’est pourquoi les changements effectués à l’intérieur de func_1() ne sont pas reflétés à l’intérieur de main(). Ce processus est connu comme le passage d’arguments en utilisant l’appel par la valeur, nous discuterons de ce concept plus en détail dans les prochains chapitres.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.