PointeurToujourPointeurEtEncore

Fermé
MiniMonster Messages postés 8 Date d'inscription dimanche 23 octobre 2011 Statut Membre Dernière intervention 2 mars 2012 - Modifié par irongege le 30/11/2011 à 08:49
MiniMonster Messages postés 8 Date d'inscription dimanche 23 octobre 2011 Statut Membre Dernière intervention 2 mars 2012 - 30 nov. 2011 à 16:31
Bonjour tout le monde !!
Voila ... lors depuis bien longtemps j'essaie de gérer les pointeur mais j'arrive pas meme en regardant des site connu...
J'ecris un code de pas mal de fichier mais je bute tjs sur les pointeur et même quand j'essaie de me faire un exemple simple j'arrive pas ...
Voila l'exemple raté ... :
int * pf; 
int additionDeDeux(int x, int y){ 
 return (x+y); 
} 

int additionDeTrois(int x, int y , int z){ 
 return (x + y + z); 
} 

int main(){ 
 int *pt; 
 pt = &(additionDeDeux);                                 // ligne 22 
 int a = additionDeTrois(1, (pt)(2, 3), 4);          // ligne 23 
 printf("le resultat est %d", a); 
 return 0; 
}


J'ai droit a ces messages ==>
TestPourri.c:22: warning: assignment from incompatible pointer type
TestPourri.c:23: error: called object 'pt' is not a function
Merci de m'aider :)

3 réponses

Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
30 nov. 2011 à 07:14
Bonjour, apparemment vous essayez de faire un pointeur de fonction. C'est un peu différent dans la syntaxe regardez :
<code>
int main(void){
int (*pt)(int,int),a;
pt=additionDeDeux;
a=pt(2,3);
printf("%d",a);
return 0;
}
Voyez vous pouvez créer un pointeur de fonction en utilisant le type quelle retourne, les parenthèses et en préciser le nom du pointeur "*pt" qui recevra l'adresse de la fonction avec ou sans le &. Et ensuite c'est important de préciser quels sont les paramètres, leurs types (int,int). Pas obligé de donner un nom aux paramètres c'est optionnel, pareil pour le pointeur de fonction s'il est lui même un paramètre... enfin là il n'en est pas un alors faut en mettre un : (*pt) au lieu de (*) tout court.
0
pekzy Messages postés 2 Date d'inscription mercredi 30 novembre 2011 Statut Membre Dernière intervention 30 novembre 2011 1
30 nov. 2011 à 08:37
D'après moi le problème vient de tes fonctions :
elle reçoivent un "int" au lieu d'un "*". De plus , une fonctions qui reçois des pointeurs ne revoit pas de "return" le plus souvent elles sont de type "void".
On utilise principalement les pointeurs en C, pour renvoyer plus d'une seul valeur dans une fonction.
0
MiniMonster Messages postés 8 Date d'inscription dimanche 23 octobre 2011 Statut Membre Dernière intervention 2 mars 2012
30 nov. 2011 à 16:31
ca y es ça marche !! :) Merci à tout les 2 :)
Stp pekzy tu peux me donner un mini exemple où le pointeur revois plus d'une seul valeur en argument à une fonction ?
0