quand on passe une variable en argument a une fonction, cette fonction peut modifier la variable, et ce changement est aussi effectué dans la fonction qui appelle cette fonction (si vous voyez ce que je veut dire)
mais pourquoi parfois cette variable n'est pas modifier ds la fonction qui appelle cette fonction ???
ex:
void fonction1(short n)
{
n+=5;
}
void fonction2(void)
{
short nb;
nb=0;
fonction1(nb)
printf(nb); // ici normalement nb doit valoir 5, mais pourquoi parfois ça n'est pas le cas dans d'autre appel comme ça de fonction ???
}
si on passe l'argument "par valeur", c'est une copie de celui-ci qui sera utilisée dans la fonction fonction1.
=> si tu fais
void fonc1(a)
{
a=10;
}
void fonc2(void)
{
int a;
a=0;
fonc1(a)
affiche(a);
}
=> ça affichera a=0;
il fo que tu passe l'adresse de la variable si tu veux la modifier....
=> la fonction appellée ne travaillera pas sur une copie, mais directement sur l'original.
(et c là qu'interviennent les pointeurs)
prototype :
void fonc1(int *);
la fonction :
void fonc1(int *a)
{
*a = 10;
}
et l'appellant :
void fonc2(void)
{
int b;
b=0;
fonc1(&b);
affiche(b);
}
=> ça affichera 10, vu que tu aura, dans fonc1, travaillé directement sur b (via son adresse)