Isobel
Il existe deux manières de passer des arguments/paramètres à une fonction. Une méthode est Appel par valeur et l'autre méthode est Appel par référence.
Appel par valeur : dans l'appel par valeur, la programmation envoie la copie d'un argument/paramètre à une fonction. Le programmeur ne transmet pas la variable réelle. Étant donné que seule la copie de la variable est transmise à la fonction, les changements/modifications effectués dans une fonction n'affectent pas la variable et la valeur de la variable reste la même après l'appel de la fonction.
L'exemple suivant le clarifiera;
Supposons a = 2 avant l'appel de fonction Fonction
vide (int a)
{
a = a + a;
a = a – 5 ;
}
Étant donné que seule une copie de la variable "a" est transmise à la fonction, c'est pourquoi même après l'appel de fonction, la valeur de a restera 2.
Appel par référence : dans l'appel par référence, l'adresse de l'argument/paramètre est transmise à la fonction. En termes simples, la variable réelle ou un pointeur est transmis à la fonction et la valeur de la variable peut être changée/modifiée dans une fonction
Par exemple ; supposons a = 2 avant l'appel de fonction
Après avoir passé cette valeur à une fonction comme
Void function(int &a)
{
*a = *a + *a;
*a = *a – 5;
}
La valeur de a deviendra "1" après l'appel de cette fonction.
Lonnie
Les arguments passés à la fonction peuvent être de deux types à savoir
1. Valeurs passées
2. Adresse passée
Le premier type fait référence à l'appel par valeur et le second type fait référence à l'appel par référence.
Par exemple, considérons program1
main()
{
int x=50, y=70;
échange(x,y);
printf(“x=%dy=%d”,x,y);
}
échange(x1,y1)
entier x1,y1;
{
int z1;
z1=x1;
x1=y1 ;
y1=z1;
printf("x1=%d y1=%d",x1,y1) ;
}
Ici, la valeur à l'échange de fonction est passée par valeur.
Considérons program2
main()
{
int x=50, y=70;
échange(&x,&y);
printf(“x=%dy=%d”,x,y);
}
échange(x1,y1)
int *x1,*y1;
{
int z1;
z1=*x1;
*x1=*y1;
*y1=z1;
printf(“*x=%d *y=%d”,x1,y1);
}
Ici, la fonction est appelée par référence. En d'autres termes, l'adresse est transmise en utilisant le symbole & et la valeur est accessible en utilisant le symbole *.
La principale différence entre eux peut être vue en analysant la sortie de programme1 et programme2.
La sortie de program1 qui est appelée par valeur est
x1=70 y1=50
x=50 y=70
Mais la sortie de program2 qui est appelée par référence est
*x=70 *y=50
x=70 y=50
C'est parce qu'en cas d'appel par valeur la valeur est passée à la fonction nommée comme échange et là, la valeur a été échangée et imprimée sous la forme
x1=70 y1=50
et à nouveau puisqu'aucune valeur n'est renvoyée et donc les valeurs d'origine de x et y comme dans la fonction principale, à savoir
x=50 y=70 ont été imprimées.