指针函数,顾名思义,首先它是个函数,返回值是一个指针。申明:类型 *函数名(参数列表)。
例如:int *fun(int a,int b )
{
……
}
由于()的优先级高于*,所以int *(fun(int ,int )),首先他是一个函数,返回值类型是int *型的指针;
而 函数指针,顾名思义,首先它是是个指针。申明:类型 (* 指针变量名)(参数列表)
例如:int (*fun)(int a ,int b)
{
……
}
通过括号强行将fun与*结合,这样fun成了指针变量名。接着以后面的()结合,说明指针指向的是一个函数,然后再与int 结合,说明返回值类型是int 型。所以fun是一个指向函数返回值为整型的指针。
i
再谈谈用函数指针作为函数的返回值。
对于有些函数它们返回指针,但是指针并不是指向常用的数据类型,int 、char等,而是指向一个函数。例子:int (*fun(int ))(int ,int ) ;是不是很晕啊。我也很晕。介绍一下分析的方法:ff首先与后面的“()”结合,即:int (*(fun(int)))(int *, int);// 用括号将ff(int)再括起来 也就意味着,ff是一个函数。接着与前面的“*”结合,说明ff函数的返回值是一个指针。然后再与后面的“()”结合,也就是说,该指针指向的是一个函数。
一般的我们可以用typedef 来定义显得简单易懂:typedef int (*pf)(int ,int ); pf fun(int);用typedef 定义以后 pf 就成了一个函数指针类型 ,那么 fun的类型返回值就是一个函数指针类型了。