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   -
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

1 réponse

Dinheru Messages postés 1019 Date d'inscription   Statut Membre Dernière intervention   67
 
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.
0