函数指针的定义方式

T  (*Func)(…) ;

这样定义了一个返回类型为T的函数指针变量Func,可以用同类型的函数给Func赋值,然后调用Func就可以实现具体函数的调用,如:

 

void MyFun(int x);    //这个声明也可写成:void MyFun( int );
void (*FunP)(int );   //也可声明成void(*FunP)(int x),但习惯上一般不这样。

int main(int argc, char* argv[])
{  

   FunP=&MyFun;  

   (*FunP)(20);  

   return 0;

}

  

上面的main函数的内容也可以写成这样:

int main(int argc, char* argv[])
{  

   FunP=MyFun;  

   FunP(20);  

return 0;

}

  

说明:

函数指针的赋值可以是FunP=MyFunFunP=&MyFun中的一个

函数指针的调用可以是(*FunP)(..)FunP(..)中的一个

 

函数名也是函数指针,但是正常定义好的函数名为指针常量,而采用T (* FunVar)(…)定义的则是指针变量,它可以接收其他的函数名来赋值

定义了实现的函数不能采用T (* FunVar)(…)这种定义方式

 

 

使用typedef来定义某一种函数的指针类型

 

定义:

  typedef int (*PtrFun)(int,int);

  这里定义了一个名为PtrFun的函数类型,这个类型的函数返回值为int,并且有两个int类型的参数,可以用这个函数类型来定义函数指针变量

使用:

  PtrFun myFun;

      定义了一个对应的函数指针变量

 

上面的PtrFun其实就是一种函数指针类型,可以用它来定义函数指针变量

posted on 2011-06-14 07:42  柯大侠  阅读(205)  评论(0编辑  收藏  举报