函数指针:
函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数
。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。
声明函数指针时,要参照函数指针所要指向函数的函数原型,例如:
int f(char,double);
int (*p)(char,double)=f;
回调函数:
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
1 //2.12函数指针作参数的排序函数
2 #include <iostream.h>
3 #include <math.h>
4 void swap(int *,int *);
5 void sort(int *,int,int (*)(int,int));
6 int less1(int,int);
7 int greater1(int,int);
8 int less2(int,int);
9 int greater2(int,int);
10 void print(int *,int);
11
12 int main()
13 {
14 intarray[10]={15,3,-1,7,9,4,-7,433,38,9};
15
16 cout<<"排升序:"<<endl;
17 sort(array,10,less1); 这里的->less1 就是回调函数!
18 print(array,10);
..................
..................
...................(省略)
钩子函数:
钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
可以认为钩子函数,只是回调函数的一个特例!