定义:
指针函数:本质是一个函数,此函数返回某一类型的指针。
函数指针:本质是一个指针,指向函数的指针变量,其包含了函数的地址,可以通过它来调用函数。
1.指针函数
一般表示形式:类型标识符 *函数名(参数表)
int *f(x,y);
首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接收,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。
例如:
float *fun( );
float *p;
p = fun(a);
2.函数指针
一般表示形式:类型标识符 (*函数名)(参数表)
int (*f) (int x);
例如:
void (*fptr)( );
// 两种初始化方式
fptr = &Function;
fptr = Function;
// 两种调用方式
x = (*fptr)( );
x = fptr( );
初始化时,取地址运算符&不是必需的,因为单单一个函数标识符标号就表示了它的地址,如果是函数调用,还必须包含一个圆括号括起来的参数表。
调用时,第二种格式看上去和函数调用无异。但是有些程序员倾向于使用第一种格式,因为它明确指出是通过指针而非函数名来调用函数的。
3.如何区分函数指针和指针函数
注意指针函数与函数指针表示方法的不同,千万不要混淆。最简单的辨别方式就是看函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针,反之则是指针函数。