Probleme sur les Prointeur en C,aidez moi svp
Ahcène78
Messages postés
4
Statut
Membre
-
Dinheru Messages postés 1019 Date d'inscription Statut Membre Dernière intervention -
Dinheru Messages postés 1019 Date d'inscription Statut Membre Dernière intervention -
bonsoir, et merci pour votre aide .
je suis débutant en C, je voudrais avoir un explication sur le résultat d'un mini programme.
#include <stdio.h>
#include <stdlib.h>
void f(int *a,int b)
{
b=b+1;
*a=2;
}
int main()
{
int a,b;
a=1;
b=4;
f(&a,b);
printf("%d %d \n",a,b);
return 0;
}
résultat a=2, b=4
pourquoi vaut a=2 et non 1?
merci pour votre aide
je suis débutant en C, je voudrais avoir un explication sur le résultat d'un mini programme.
#include <stdio.h>
#include <stdlib.h>
void f(int *a,int b)
{
b=b+1;
*a=2;
}
int main()
{
int a,b;
a=1;
b=4;
f(&a,b);
printf("%d %d \n",a,b);
return 0;
}
résultat a=2, b=4
pourquoi vaut a=2 et non 1?
merci pour votre aide
1 réponse
Et bien dans ta fonction f tu passe en paramètre un pointeur sur a et une copie de la valeur de b.
Donc dans ta fonction : f(&a,b)
Quand tu fais b=b+1 -> tu travaille avec un b différent que celui que tu utilise dans ton main.
Quand tu fais *a=2 -> là par contre tu travaille bien sur le même "a", car ta variable a de ta fonction f pointe vers la même adresse que ta variable a de ton main.
Donc quand tu appelle une fonction tu passe tes paramètres soit par copie, comme pour b et tu modifira pas sa valeur, soit par référence, comme pour ta variable a et là ta fonction pourra modiifer sa valeur.
Voila en espérant avoir été clair ^^
PS : Une fois que tu aura bien compris les pointeurs en C, t'aura compris le plus dur.
Donc dans ta fonction : f(&a,b)
Quand tu fais b=b+1 -> tu travaille avec un b différent que celui que tu utilise dans ton main.
Quand tu fais *a=2 -> là par contre tu travaille bien sur le même "a", car ta variable a de ta fonction f pointe vers la même adresse que ta variable a de ton main.
Donc quand tu appelle une fonction tu passe tes paramètres soit par copie, comme pour b et tu modifira pas sa valeur, soit par référence, comme pour ta variable a et là ta fonction pourra modiifer sa valeur.
Voila en espérant avoir été clair ^^
PS : Une fois que tu aura bien compris les pointeurs en C, t'aura compris le plus dur.