函数指针及其用作函数返回值

函数指针是个不太容易理解的概念,区别于指针函数

1. 函数指针:本身是个指针,只不过指向某个函数的起始地址,而不像普通指针(例如 int* p)那样指向变量,它本身是指向函数的指针

        实例:

// ① 声明一个函数指针pFunction,指向某一个(返回值为int型,参数为int和int型)的函数
int ( * pFunction )( int, int ) 
// ② 声明一个函数指针pFunction,指向某一个(返回值为void,参数也是void)的函数
void ( * pFunction )( void )
// ③ 声明一种指针类型pFunType,使用该类型定义的指针指向(返回值为int型,参数为int和int型)的函数
typedef  int ( * pF )( int, int )

        上述三例中,pFunction 和 pF 都作为函数指针的声明。其中① 和② 只是具体内容(函数的返回值、参数)不同,形式相同。③中使用typedef来声明一种函数指针的类型,关于typedef,一般使用都是 typedef  name  TYPENAME 的形式,用于函数指针时较为特殊,可以理解为:函数指针类型声明都是在表达式中的固定位置进行声明即在 typedef  int ( * pF )( int ,  int ) 中 pF 的位置是固定的,在该位置上的就是声明的部分。

        一般常用③typedef的形式声明函数指针类型。

        理解了typedef的含义,再来看整个表达式,既然是类型声明,因此有 pF  pMove 的使用形式。声明了一个 pMove 指针,等同于 int ( *pMove )( int ,  int ) 


        另外还有一种使用场景也比较常见函数指针作为函数的返回值,形如int ( * (fun( char c ) ) )( int ,  int )或 pF  function( char  c )

        分析一下这个声明,划线部分是一个函数fun( char ),拆开了看, int ( * (      ) )( int ,  int ) 和 fun( char  c ) ,如上所述 int ( * (        ) )( int ,  int ) 等同于pF类型,可以看到这里是用pF 来修饰函数 fun( char  c ),pF 是“指向返回值为 int 型,参数为 int 和 int 型的函数的指针”类型,所以 fun( char c ) 的返回值就是一个指针,该指针“指向返回值为 int 型,参数为 int 和 int 型的函数”,即为 pF function( char c )的形式。


2. 指针函数

        实例: int *  function( int a ,  int b )

        指针函数就是返回值为指针的函数,比较常见不再多说,唯一的特殊情况就是,如果返回的指针是函数指针,则是函数指针作为函数的返回值的应用场景了。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值