Comment utiliser un tableau de pointeurs de fonction en C?
Comment puis-je les initialiser?
c
initialization
function-pointers
Le gars avec le chapeau
la source
la source
(*p[4]) (int, int) {sum,substract,mul,div}
Les réponses ci-dessus peuvent vous aider, mais vous voudrez peut-être également savoir comment utiliser un tableau de pointeurs de fonction.
Vous ne pouvez affecter les adresses des fonctions avec le même type de retour et les mêmes types d'argument et aucun argument à un seul tableau de pointeurs de fonction.
Vous pouvez également passer des arguments comme ci-dessous si toutes les fonctions ci-dessus ont le même nombre d'arguments du même type.
Remarque: ici, dans le tableau, la numérotation des pointeurs de fonction commencera à 0 comme dans les tableaux généraux. Ainsi, dans l'exemple ci-dessus, il
fun1
peut être appelé si option = 0,fun2
peut être appelé si option = 1 etfun3
peut être appelé si option = 2.la source
(*func_ptr[3])
en(*func_ptr[3])()
et il sera compiléVoici comment vous pouvez l'utiliser:
New_Fun.h
New_Fun.c
Principal c
J'espère que cela aide à comprendre
Function Pointer.
la source
f1, f2 ...
et à la place de puis entrez 'writefile, readfromfile ...' ... il devient plus redableCette «réponse» est plus un addendum à la réponse de VonC; en notant simplement que la syntaxe peut être simplifiée via un typedef, et que l'initialisation agrégée peut être utilisée:
la source
Oh, il y a des tonnes d'exemples. Jetez un œil à tout ce qui se trouve dans glib ou gtk. Vous pouvez voir le travail des pointeurs de fonction dans le travail là tout le chemin.
Voici par exemple l'initialisation du truc gtk_button.
Et dans gtkobject.h, vous trouvez les déclarations suivantes:
Le truc (* set_arg) est un pointeur vers une fonction et cela peut par exemple être affecté à une autre implémentation dans une classe dérivée.
Souvent, vous voyez quelque chose comme ça
Ainsi, vous pouvez accéder à la table par son nom et appeler la fonction "associée".
Ou peut-être que vous utilisez une table de hachage dans laquelle vous mettez la fonction et l'appelez "par nom".
Cordialement
Friedrich
la source
Peut l'utiliser de la manière suivante:
la source
Il doit s'agir d'un exemple de code court et simple copier-coller des réponses ci-dessus. Espérons que cela aide.
la source
La solution la plus simple est de donner l'adresse du vecteur final souhaité et de la modifier à l'intérieur de la fonction.
la source
Cette question a déjà reçu de très bons exemples. Le seul exemple qui pourrait manquer est celui où les fonctions renvoient des pointeurs. J'ai écrit un autre exemple avec ceci et ajouté beaucoup de commentaires, au cas où quelqu'un le trouverait utile:
la source
Cet exemple simple de tableau multidimensionnel avec des pointeurs de fonction ":
la source