函数指针学习

函数指针学习

最近遇到了函数指针,这只是我的学习记录,有错还请指正。

首先看看指针函数和函数指针的区别

指针函数:返回类型是指针的函数!
int * fun(int x); //返回的类型是指针的函数。

函数指针:指向一个函数的指针!
int (*fun)(int x); //函数指针。
返回值类型 (*指针变量名)(形参列表)
函数指针本身是指针变量。只不过不同于我们常见的指向一个变量,如int * p = & i ; i是一个变量,而函数指针是指向函数。

让我们看一下函数指针的定义

定义

函数指针,其本质是一个指针变量,该指针指向一个函数。总结来说,函数指针就是指向函数的指针。
声明格式:
数据类型标志符 (指针变量名) (形参列表);

注:“函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表”表示指针变量指向的函数所带的参数列表。

举个例子:int (*p)(int ,int )
表示p是指向函数的指针,它指向的那个函数,返回值为int类型,两个参数为int类型

再来看看int * fun(int , int )
这个和上面那个有什么不同呢?由于*的优先级低于(),所以fun先和()结合,所以fun首先是一个函数,它的2个参数均为int类型,返回值为int * ,即返回值为一个指针。

上面都看懂了的话,再来看看这个式子
int * (* x[10])(void)
[]的优先级比高,所以x先和[]结合,x首先是一个数组,10是这个数组的长度。然后和结合,(* x[10])表示数组里的元素均为指针,而且指针是指针函数,函数的参数是void类型,返回值是int * 。

那么下面这个又是什么意思呢?
void (x(int ,void()(int)))(int)
首先void(*)(int)表示一个函数指针,指向的函数,参数是int类型,返回值为void。x是一个函数,有2个参数,一个是int类型,另一个是函数指针。x函数的返回值是一个函数指针,指向的函数参数是int类型,返回值是void。

这是一个函数的声明,它接受一个int和一个指向一个函数的指针(取int返回void)并返回一个指向一个函数的指针(取int和返回void)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值