Pointeur de fonction
Un pointeur de fonction est une variable pointeur qui pointe vers une fonction.
Généralement, la variable pointeur à laquelle nous faisons référence pointe vers une variable telle qu'un entier, un caractère ou un tableau, tandis qu'un pointeur de fonction pointe vers une fonction.
Un pointeur de fonction peut être utilisé comme une fonction normale pour appeler des fonctions et passer des paramètres.
Déclaration du type de pointeur de fonction :
typedef int (*fun_ptr)(int,int); // 声明一个指向同样参数、返回值的函数指针类型
Exemple
L'exemple suivant déclare une variable pointeur de fonction p, pointant vers la fonction max :
Exemple
Compilez et exécutez, le résultat de sortie est le suivant :
请输入三个数字:1 2 3 最大的数字是: 3
fonction de rappel
Pointeur de fonction comme paramètre d'une fonction
Une variable pointeur de fonction peut être utilisée comme paramètre d'une fonction ; une fonction de rappel est une fonction appelée au moyen d'un pointeur de fonction.
En termes simples : une fonction de rappel est une fonction que vous implémentez et qui est appelée pendant l'exécution de la fonction de quelqu'un d'autre.
Voici une explication de l'auteur Zhihu Chang Xiling :
Vous allez dans un magasin pour acheter quelque chose, mais l'article que vous voulez se trouve justement être en rupture de stock, alors vous laissez votre numéro de téléphone à l'employé. Quelques jours plus tard, l'article est de nouveau en stock et l'employé vous appelle ; en recevant l'appel, vous allez au magasin récupérer l'article. Dans cet exemple, votre numéro de téléphone est appelé la fonction de rappel, le fait de laisser votre numéro de téléphone à l'employé est appelé enregistrer la fonction de rappel, l'arrivée ultérieure de l'article en stock est appelée déclencher l'événement associé au rappel, le fait que l'employé vous appelle est appelé invoquer la fonction de rappel, et le fait que vous alliez au magasin récupérer l'article est appelé répondre à l'événement de rappel.
Exemple
dans l'exemplepopulate_array()La fonction définit trois paramètres, dont le troisième est un pointeur de fonction ; les valeurs du tableau sont définies via cette fonction.
Dans l'exemple, nous avons défini une fonction de rappelgetNextRandomValue()Elle renvoie une valeur aléatoire, et elle est passée comme pointeur de fonction à la fonctionpopulate_array().
populate_array()appellera10la fonction de rappel, et affecte la valeur de retour de la fonction de rappel au tableau.
Exemple
Compilez et exécutez, le résultat de sortie est le suivant :
16807 282475249 1622650073 984943658 1144108930 470211272 101027544 1457850878 1458777923 2007237709autres extensions