1. 函数指针的概念
之前学过的指针可以指向变量、数组、字符串、结构体、指针,函数指针就是指向函数的指针。
声明函数指针的方法:"返回类型" (*"指针变量名") ("参数类型");
例如有一个返回值为int,参数为两个int类型的函数为int function(int num1, int num2);,可以定义指向这个函数的函数指针为:int (*myFunctionPointer) (int, int);
将原函数的地址赋给函数指针后,直接使用函数指针myFunctionPointer即可调用原函数。
赋地址时,取地址符&可以省略。
1 |
|
函数指针的用途为实现回调函数,函数指针变量可以作为某个函数的参数来使用的,回调函数就是一个通过函数指针调用的函数。简单讲:回调函数是由别人的函数执行时调用你实现的函数,它允许将一个函数作为参数传递给另一个函数,这样,当特定事件发生的时候,可以触发调用传递的参数。
以下是来自知乎作者常溪玲的解说:
你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。
这种机制在事件驱动编程中非常常用。
