函数指针和指针函数的区别可以参考《数组指针和指针数组的区别》http://blog.csdn.net/gjhqq/article/details/8936149,下面具体来说说:
1、指针函数:是指函数的返回值类型是一个指针类型,本质是一个函数,如 int *function(void);这里可以认为是int* function(void);返回值是int*,是一个指针。
2、函数指针:本质是一个指针,但是这个指针指向一个函数,这个指针就叫函数指针,如int (*function)(void)。
从这里就可以看出来,指针函数、函数指针两个名词就看后面两字就可以区别了,是函数还是指针。
另外,函数指针有两个用途:调用函数和做函数的参数。
int func(int x); //声明一个函数
int (*fp)(int x); //定义一个函数指针
fp = func; //将func函数的首地址赋值给指针fp
3、回调函数:就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。