函数指针

函数指针的定义方式

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=MyFun和FunP=&MyFun中的一个

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

 

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

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

 

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

 

定义:

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

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

使用:

  PtrFun myFun;

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

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值