返回指向函数的指针

函数可以返回指向函数的指针,但是,正确写出这种返回类型相当不容易:

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

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午8:45
下一篇 2023年2月9日 下午8:46

相关推荐