函数指针

来源:互联网 发布:mac如何删除三方软件 编辑:程序博客网 时间:2024/05/20 21:44

函数指针的定义方式

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其实就是一种函数指针类型,可以用它来定义函数指针变量

原创粉丝点击