PointeurToujourPointeurEtEncore
MiniMonster
Messages postés
8
Statut
Membre
-
MiniMonster Messages postés 8 Statut Membre -
MiniMonster Messages postés 8 Statut Membre -
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é ... :
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 :)
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
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.
<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.
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.
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.