Comment fonctionnent les pointeurs de fonction dans C?

Bonjour,

J’aimerais savoir comment fonction et comment utiliser les pointeurs de fonction en C.

Si quelqu’un peut m’expliquer, je suis preneur :innocent:.

Commençons par une fonction de base sur laquelle nous allons pointer :

int add(int a, int b) {
    return a+b;
}

Tout d’abord, définissons un pointeur vers une fonction qui reçoit 2 entiers et renvoie un entier:

int (*ptrF)(int,int);

Nous pouvons maintenant pointer vers notre fonction en toute sécurité :

ptrF = &add;

Maintenant que nous avons un pointeur vers la fonction, utilisons-la :

int somme = (*ptrF)(1, 2);       // somme == 3

Passer le pointeur à une autre fonction est pratiquement la même chose :

int addOneAndTwo(int (*ptrF)(int, int)) {
    return (*ptrF)(1, 2);
}

Nous pouvons également utiliser des pointeurs de fonction dans les valeurs de retour:

int (*ptrF(int n))(int, int) {
    printf("Paramètre reçu %d", n);
    int (*ptrF)(int,int) = &add;
    return ptrF;
}
2 « J'aime »