int (*(*ptr(int,int)))(int)的理解

刚刚网易笔试中的 int (*(*ptr(int,int)))(int),我的理解是这样的,有不对的地方,请各位大佬指出,谢谢!!!!!

只需要记住 () 的优先级比 * 要高就行了

1. 先看内层括号 ptr(int, int),说明 ptr 接收(int, int) 类型的参数。

2. 再看 *ptr(int, int)说明 可以对 ptr(int, int) 返回的结果解引用,即 ptr(int, int) 返回一个指针。

3. *(*ptr(int, int)) 说明ptr(int, int)返回的结果解引用之后还可以通过*解引用,说明 ptr(int, int)返回一个二级指针。

4. 最外层的int(...)(int)说明了这个二级指针解两次引用后,是int(...)(int)类型的函数。

综上,声明了一个名为 ptr 的函数,他接受(int, int) 类型的参数,并返回一个二级函数指针,这个二级函数指针所对应的函数接受一个 int 类型参数,返回一个 int 。
#网易#
全部评论
int* func(int):func是函数; int (*pFunc)(int):pFunc是函数指针; ()比*优先级更高; 递归分析,题目的ptr本身是高数,参数为(int int)返回为函数指针,该函数指针指向参数为int返回为int的函数
点赞 回复 分享
发布于 2017-09-09 20:08
#include <stdio.h> typedef int (*p)(int); typedef p* q(int, int); // 楼主的分析是对的,ptr的类型就是q,下面写个小例子验证一下 int bar(int x) {     return x; } p foo = bar;   int (*(*ptr(int x,int y)))(int) {     return &foo;  } int main() {     printf("%d\n",(**ptr(0,0))(5)); //ptr是一个函数,返回一个二级指针,对二级指针解引用得到一个函数     return 0;  }
点赞 回复 分享
发布于 2017-09-09 19:41
ptr 是一个函数,该函数接受(int, int)作为参数,返回一个指针,该指针是指向一个函数(接受(int)作为参数,返回int)指针。 !!!可能是错的
点赞 回复 分享
发布于 2017-09-09 19:01
我怎么觉得这是一个函数指针,指向的是一个形参是(int,int)返回为函数指针的一个函数
点赞 回复 分享
发布于 2017-09-09 18:58

相关推荐

08-25 14:25
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务