指针函数,函数指针

指针函数,顾名思义,首先它是个函数,返回值是一个指针。申明:类型 *函数名(参数列表)。

例如:int *fun(int  a,int b )

{

……

}

由于()的优先级高于*,所以int *(fun(int ,int  )),首先他是一个函数,返回值类型是int *型的指针;


而 函数指针,顾名思义,首先它是是个指针。申明:类型 (* 指针变量名)(参数列表)


例如:int (*fun)(int a ,int b)

{

……

}

通过括号强行将fun与*结合,这样fun成了指针变量名。接着以后面的()结合,说明指针指向的是一个函数,然后再与int 结合,说明返回值类型是int 型。所以fun是一个指向函数返回值为整型的指针。

i

再谈谈用函数指针作为函数的返回值。

对于有些函数它们返回指针,但是指针并不是指向常用的数据类型,int 、char等,而是指向一个函数。例子:int (*fun(int ))(int  ,int ) ;是不是很晕啊。我也很晕。介绍一下分析的方法:ff首先与后面的()结合,即:int (*(fun(int)))(int *, int);// 用括号将ff(int)再括起来 也就意味着ff是一个函数。接着与前面的*结合,说明ff函数的返回值是一个指针。然后再与后面的()结合,也就是说,该指针指向的是一个函数。

一般的我们可以用typedef 来定义显得简单易懂:typedef int (*pf)(int ,int ); pf fun(int);用typedef 定义以后 pf 就成了一个函数指针类型 ,那么 fun的类型返回值就是一个函数指针类型了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值