指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针,即地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有返回值。而且,在主调函数中,函数返回值必须赋给同类型的指针变量。

形式: 类型标识符   *函数名(参数表)

           int *f(x,y)

例如:

    float *fun();

    float *p;

     p=fun(a);

       注意函数指针与指针函数的区别,千万不要混淆。最简单的辨别方式就是看函数名前面的指针*号有没有被括号包含,如果被括号包含就是函数指针,反之就是指针函数。

指针函数:

       当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中。

       函数指针指向函数的指针变量,即本质是一个指针变量。  

例如:       

       int (*f)(int x);

       f=func();

       指向函数的指针包含了函数的地址,可以通过它来调用函数。声明格式是:

              类型说明符  (*函数名)(参数)

       指针名和指针运算符外面的括号改变了默认的运算符优先级,如果没有圆括号,就变成一个返回整形指针的函数的原型声明。

       例如:

               void (*fptr)();

        把函数的地址赋值给函数指针,可以采用下面两种形式:

               fptr=&function;

               fprt=function;

        取地址运算符是不必须的,因为单单一个函数标识符就表示了它的地址,如果是函数调用,还必须包含一个圆括号括起来的参数表。

        函数指针和指针函数最主要的区别就是一个是指针变量,一个是函数,我们必须要正确使用。