Les pointeurs de fonction permettent de transmettre des fonctions en tant que paramètres, ce qui rend les appels de fonctions plus flexibles. Vous déclarez un pointeur de fonction, transmettez des paramètres et appelez la fonction pointée via des opérateurs de pointeur. Des fonctions avancées telles que la planification dynamique et la sélection d'algorithmes de tri peuvent être implémentées via des pointeurs de fonction.
Comment transmettre et appeler des fonctions à l'aide de pointeurs de fonction C++
Un pointeur de fonction est un type spécial de pointeur qui pointe vers une fonction. Les pointeurs de fonction nous permettent de transmettre des fonctions comme arguments à d'autres fonctions, permettant ainsi des appels de fonctions de niveau supérieur.
Déclaration et initialisation du pointeur de fonction
Pour déclarer un pointeur de fonction, nous devons spécifier le type de retour et le type de paramètre de la fonction :
1 |
|
Le code ci-dessus déclare un pointeur de fonction func_ptr
, qui pointe vers une fonction de réception qui prend deux entiers et renvoie un entier. func_ptr
,它指向一个接收两个整数并返回一个整数的函数。
要初始化函数指针,我们可以使用函数名或函数指针:
1 2 |
|
其中 my_function
是具有相应签名的函数。
传递函数指针
可以将函数指针作为参数传递给其他函数:
1 2 3 4 |
|
上面函数 call_function
接收一个函数指针 func
,该函数指针指向一个接收两个整数并返回一个整数的函数。
调用函数指针
要调用通过函数指针指向的函数,我们需要使用指针运算符 (*
):
1 |
|
实战案例
考虑以下使用函数指针排序数组的示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
在上面的示例中,我们定义了三个比较函数:
compare
:降序比较函数greater_than
:升序比较函数(使用函数指针)[](int a, int b) { return a < b; }
:升序比较函数(使用 lambda 表达式)函数 sort
ma_fonction
est la fonction avec la signature correspondante. 🎜🎜🎜Passer des pointeurs de fonction🎜🎜🎜Vous pouvez passer des pointeurs de fonction en tant que paramètres à d'autres fonctions : 🎜rrreee🎜La fonction ci-dessus call_function
reçoit un pointeur de fonction func
, qui pointe vers Une fonction qui prend deux entiers et renvoie un entier. 🎜🎜🎜Appel d'un pointeur de fonction🎜🎜🎜Pour appeler une fonction pointée par un pointeur de fonction, il faut utiliser l'opérateur pointeur (*
) : 🎜rrreee🎜🎜Cas pratique🎜🎜🎜Considérez le ordre suivant à l'aide de pointeurs de fonction Exemple de tableau : 🎜rrreee🎜Dans l'exemple ci-dessus, nous définissons trois fonctions de comparaison : 🎜compare
: fonction de comparaison décroissante[](int a, int b) { return a < b ; function (Utilisation d'expressions lambda)
sort
prend un pointeur de fonction comme paramètre et trie le tableau en fonction de la fonction de comparaison spécifiée. Cet exemple montre comment utiliser des pointeurs de fonction pour basculer facilement entre différents algorithmes de tri. 🎜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!