字面意思:
指针函数:指针是修饰,函数是对象,所以指针函数肯定讲的是函数,而且是指针型,重心就是函数
函数指针:同理,函数指针是指针,该指针指向函数,重心是指针
所以,看到指针函数,其实就是函数,函数指针就是指针
在看定义之前先了解下*和()的优先级
优先级:()> *
结合方向: 自左向右
定义:
指针函数:
int *fun(int,int)
优先级()> *,所以,先看fun(int,int),是函数,再与*结合,所以这是一个函数,是一个指针型的函数,返回值是指针,而且还是个int型指针,连贯起来说:fun是一个返回值为int型指针的函数。
函数指针:
int (*fun)(int,int)
优先级相同,看结合方向:自左向右,先看(*fun),fun是一指针,再与(int,int)结合,返回值是int,所以是一个指向函数的指针,连贯起来说:fun是一个指向返回值为int型函数的指针。
返回值是函数指针的指针函数:
int (*fun(int))(int , int);
*fun(int):fun是函数,返回值是指针,就是指针函数
int (*f)(int , int):*f是fun函数返回值,指向函数的指针,返回值是int,*f是一个返回值为int型的函数指针
最终结果就是:fun是一个返回值为int型函数指针的指针函数
是不是表示很难懂
看下面:
typedef int (*f)(int,int)
将f定义为一种类型,实际意义还是函数指针
f *fun(int,int)
fun就是一个返回值为f型的指针函数,f是函数指针,就fun是一个返回值为函数指针的指针函数