Maison >Problème commun >Comment implémenter la fonction de rappel en langage C
La fonction de rappel consiste à implémenter différentes fonctions via une interface unifiée. La fonction de rappel en langage C consiste à appeler différentes fonctions de rappel dans le code en fonction des différents paramètres passés.
La fonction de rappel est un programme A. fonction qui ne peut pas être appelée explicitement par la fonction de rappel ; la fonction de rappel est appelée en transmettant l'adresse de la fonction de rappel à l'appelant. L'utilisation de fonctions de rappel est nécessaire lorsque l'on souhaite implémenter différents contenus via une interface unifiée, les fonctions de rappel sont très adaptées.
[Tutoriel recommandé : Tutoriel langage C]
Par exemple, nous avons écrit différentes fonctions d'affichage pour plusieurs appareils différents :
void TVshow(); void ComputerShow(); void NoteBookShow()...等等。
C'est à ce moment-là que nous voulons utiliser une fonction d'affichage unifiée, et nous pouvons utiliser la fonction de secours à ce moment-là.
void show(void (*ptr)());
Lorsqu'elles sont utilisées, différentes fonctions de rappel sont appelées en fonction des paramètres transmis.
Différents langages de programmation peuvent avoir une syntaxe différente. Voici un exemple de fonction de rappel en langage C. Une fonction de rappel ne prend pas de paramètres et l'autre fonction de rappel prend des paramètres.
#include <stdlib.h> #include <stdio.h> int Test1() { int i; for(i=0; i<30; i++) { printf("The %d th charactor is: %c\n", i, (char)('a' + i%26)); } return 0; } int Test2(int num) { int i; for (i=0; i<num; i++) { printf("The %d th charactor is: %c\n", i, (char)('a' + i%26)); } return 0; } void Caller1( void (*ptr)() )//指向函数的指针作函数参数 { (* ptr)(); } void Caller2(int n, int (*ptr)())//指向函数的指针作函数参数,这里第一个参数是为指向函数的指针服务的, { //不能写成void Caller2(int (*ptr)(int n)),这样的定义语法错误。 (* ptr)(n); } int main() { printf("************************\n"); Caller1(Test1); //相当于调用Test1(); printf("&&&&&&************************\n"); Caller2(30, Test2); //相当于调用Test2(30); return 0; }
Le rendu est le suivant
Ce qui précède est appelé en passant l'adresse de la fonction de rappel à l'appelant, mais il convient de le noter que le rappel prend les paramètres Utilisation de la fonction.
Pour implémenter des rappels, vous devez d'abord définir un pointeur de fonction. La définition des pointeurs de fonction est brièvement mentionnée ici.
Par exemple :
int (*ptr)();
Ici ptr est un pointeur de fonction, dans lequel les parenthèses de (*ptr) ne peuvent pas être omises,
car la priorité des parenthèses est supérieur à celui des astérisques, cela devient une déclaration de fonction avec un type de retour entier.
Résumé : ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à tout le monde.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!