函数可以返回指向函数的指针,但是,正确写出这种返回类型相当不容易:
1 // ff is a function taking an int and returning a function pointer 2 // the function pointed to returns an int and takes an int* and an int 3 int (*ff(int))(int*, int);
阅读函数指针声明的最佳方法是从声明的名字开始由里而外理解。
要理解该声明的含义,首先观察:
ff(int)
将 ff 声明为一个函数,它带有一个 int 型的形参。该函数返回
int (*)(int*, int);
它是一个指向函数的指针,所指向的函数返回 int 型并带有两个分别是int* 型和 int 型的形参。
以上文字摘自《C++ Primer》,其实有一个方法理解起来更简单:
将ff(int)看成一个变量,假设为p,那么上面这个函数就变成:
1 int (*p)(int*, int); //ff(int)被看作一个整体p
这样就一目了然,p是一个指向函数的指针,它指向的函数有两个参数,分别是int *和int型,该函数的返回类型是int。这是其一。
其二:因为p此时代表的实际上是:ff(int),所以,可以理解为p是ff(int)函数的返回值。
综合起来解释就是:ff(int)函数返回一个指针,这个指针指向一个函数,该函数“有两个参数,分别是int *和int型,该函数的返回类型是int”。
原文链接: https://www.cnblogs.com/tingshuixuan2012/archive/2013/03/31/2991586.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/82788
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!