今天跟一个朋友聊到函数指针的问题,发现其实很多人不懂得如何解读一个函数指针的声明。其实有一个非常好用的法则,但我观察到很多视频或者文章里并没有提到,只是单纯告诉你他举的例子如何解读,换一个例子又不知道了。我给我那朋友解释完,他直惊呼“卧槽”,所以想分享出来,希望可以帮助到那个同样困惑的你。
我才发现B站不支持Markdown,没法插入代码块,只能贴图了:(
首先从简单的例子讲起,你至少需要知道这是一个函数指针:
整个声明有三个部分,fp是我们给它的名字,左边那个“*”说明它是一个指针,右边(int)是接受的参数类型,前面void是返回类型。你肯定想,
但是这个呢?
很多人即使大概能看懂,也没法自信的说就是这样,更没法给别人解释了。其实知道规则以后,会非常易读。我管这个规则叫右摇左摆法则,非常滑稽的名字,bear with me,但实际使用就是从中间看起,然后看它的右边,再看它的左边,再看右边,再看左边,直到结束。
所以上面这个例子,我们从fp1也就是中间开始看,
看中间,fp1,fp1是一个什么呢?
看右边,右边什么也没有,遇到括号表示告一段落。
看左边,是一个*,也就是pointer,所以fp1是一个指针,是什么样的指针呢?
看右边,(int),是一个接受一个int为参数的函数指针。
看左边,是一个*,也就是返回值是一个指针,是一