函数指针(整理)

函数指针

   函数指针指向的是函数而非对象。和其他指针一样,函数指针指向某种特定类型。函数的类型由它的返回值和形参共同决定,与函数名无关。

函数指针声明方法:

  函数类型(*指针变量名)(形参列表)

函数类型指:函数返回值类型,"(*指针变量名)"中括号不能省,若省略则为一个返回数据类型为指针的函数。例如:

   bool func(string a);//函数声明

   bool (*pf)(string a);//指针函数声明。pf指向一个函数。该函数的形参为string类型,返回值类型为bool类型。

   bool *pf(string a );//pf是一个返回值为bool指针的函数


使用函数指针

   当我们把函数名作为一个值使用时,该函数自动转换成指针。

   pf=func;//pf指名为func的函数

   pf=&func;//等价的赋值语句

  

调用,下列3中调用方法等价

    bool b1=pf("hello");

    bool b2=(*)pf("hello");

    bool b3=func("hello");


在指向不同函数类型的指针之间不存在转换规则。但可为函数指针赋值为nullptr或0,表示没有指向任何一个函数。

      string::size_type=func2(string b);

      bool func3(char *);

      pf=func2//错,返回类型不同

      pf=func3//错, 形参类型不同

     pf=func1//对。返回类型和形参类型匹配

    pf=0;//对。pf不指向任何函数


 重载函数的指针

     使用重载函数必须明确的指出选用哪个函数。

      double f(int *);

      double f(unsigned int);

      double  (*pf1)(int *)=f//对

      void  (*pf2)(int *)=f//错 返回类型不同

      double (*pf)(int)=f//错





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值