Les pointeurs vers des fonctions
nicolas
-
kilian Messages postés 8854 Statut Modérateur -
kilian Messages postés 8854 Statut Modérateur -
bonjour !
voila je suis en train de programmer sous linux et j'ai besoin d'utiliser les pointeurs de fonctions or je ne trouves pas vraiment de doc dessus
est ce ke kelkun peut m'expliquer comment déclarer un pointeurs de fonction et comment obtenir l'adresse d'une fonction?
voila merci d'avance
voila je suis en train de programmer sous linux et j'ai besoin d'utiliser les pointeurs de fonctions or je ne trouves pas vraiment de doc dessus
est ce ke kelkun peut m'expliquer comment déclarer un pointeurs de fonction et comment obtenir l'adresse d'une fonction?
voila merci d'avance
A voir également:
- Les pointeurs vers des fonctions
- Windows 7 vers windows 10 - Accueil - Mise à jour
- Qwerty vers azerty - Guide
- Vers quelle adresse web renvoie ce lien - Guide
- Comment exporter les photos de google photo vers l'ordinateur - Guide
- Envoyer vers - Guide
3 réponses
Oups, je me rattrape vite fait, les arguments des pointeurs de fonction n'ont pas de nom, juste un type, donc notre pointeur de tout à l'heure sera:
Et l'adresse d'une fonction, ce n'est pas juste son nom mais il faut aussi utiliser l'opérateur &
Donc l'exemple de tout à l'heure corrigé ça donne:
http://casteyde.christian.free.fr/online/cours_cpp/x2102.html
int (*bidule) (char)
Et l'adresse d'une fonction, ce n'est pas juste son nom mais il faut aussi utiliser l'opérateur &
Donc l'exemple de tout à l'heure corrigé ça donne:
int machin(char truc); //Puis le pointeur int (*p_fonction) (char); //Et on pointe: p_fonction = &machin; /*Le nom d'une fonction avec & devant représente son adresse*/
http://casteyde.christian.free.fr/online/cours_cpp/x2102.html
Salut,
D'abord, il faut t'assurer que ton pointeur de fonction retourne le même type et prend le même nombre et le même type de paramètre que la fonction vers laquelle il pointe. En gros un pointeur de fonction doit être un moule de la même taille.
Un exemple simple pour déclarer un pointeur de fonction qui prend un paramètre char et retourne un entier:
Tu saisis? (*p_fonction) est entre parenthèses pour signifier que c'est un pointeur, c'est à bien distinguer d'un vraie fonction qui retournera un pointeur:
La j'ai déclaré une vraie fonction qui retournera un pointeur d'entier.
Donc il faut bien mettre l'opérateur * et le nom du pointeur entre parenthèses.
Ceci dit, pour compliquer les choses, si tu veux que ton pointeur de fonction retourne un pointeur d'entier ce sera:
Maintenant si tu veux faire pointer l'adresse d'une fonction vers ton pointeur (je garde le pointeur du premier exemple), eh bien prenons une vraie fonction (même type, même type et nombre de paramètre):
D'abord, il faut t'assurer que ton pointeur de fonction retourne le même type et prend le même nombre et le même type de paramètre que la fonction vers laquelle il pointe. En gros un pointeur de fonction doit être un moule de la même taille.
Un exemple simple pour déclarer un pointeur de fonction qui prend un paramètre char et retourne un entier:
int (*p_fontion) (char bidule)
Tu saisis? (*p_fonction) est entre parenthèses pour signifier que c'est un pointeur, c'est à bien distinguer d'un vraie fonction qui retournera un pointeur:
int *p_fonction(char bidule)
La j'ai déclaré une vraie fonction qui retournera un pointeur d'entier.
Donc il faut bien mettre l'opérateur * et le nom du pointeur entre parenthèses.
Ceci dit, pour compliquer les choses, si tu veux que ton pointeur de fonction retourne un pointeur d'entier ce sera:
(int *) (*p_fonction)(char bidule)
Maintenant si tu veux faire pointer l'adresse d'une fonction vers ton pointeur (je garde le pointeur du premier exemple), eh bien prenons une vraie fonction (même type, même type et nombre de paramètre):
int machin(char truc); //Puis le pointeur int (*p_fontion) (char bidule); //Et on pointe: p_fonction = machin; //Le nom d'une fonction représente son adresse
merci bien ça m'aidera dans le dévelopement de mon programme
effectivement c assez compliquez ,en fait je les avais deja utilisé il y'a longtemps mais on perd de memoire la mannière dont il faut ecrire c trucs la d'ailleurs on peut le voir pour toi car tu as fait des erreurs ;)
enfin voila merci bcp
salut
effectivement c assez compliquez ,en fait je les avais deja utilisé il y'a longtemps mais on perd de memoire la mannière dont il faut ecrire c trucs la d'ailleurs on peut le voir pour toi car tu as fait des erreurs ;)
enfin voila merci bcp
salut