今天看到cocos2d中菜单按钮的源码用到函数指针,来解析一下用法
函数指针
本质:指针,变量
定义:void (*p)(int x);---------这个定义不完全准确,我们的目的是知道我们用的是什么,会用
看一下怎么定义
void Temp(int x){ int m = x; }-----定义一个普通函数----我在main里写 Temp;----思考:这代表什么意思
汇编看不出来,不过我们写成void (*p)(int) = Temp看汇编
看到的结果是把函数的首地址放到指着p里-----p是指针----内容是函数的地址-----这就是函数指针的意义
至于定义:函数的返回值类型 (*//指针)(//参数)
注意:星星加括号,否则成了返回值为指针的普通函数
------有人会说和指针函数的区别(没有指针函数的概念,他们说的是返回值是指针的函数)
优点:可以调任意函数-------参考创建线程函数(详见C++晋升之多线程)
利:封装(想象一下,封装好一堆函数,用一个函数指针可以调,感觉起来很方便)
用法:一、普通调任意函数 二、和typedef结合为自定义类型
三、函数指针数组 四、函数指针当参数
五、还有函数指针用来当返回值的,但是写法不太一样,有进一步的研究我再来补充