[求助] int a (int b) ;是什么意思?

支点305 2018-01-03 09:24:05
还有 int a (int b (int c)) ;
求大神指教
...全文
4456 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
狐狸小十 2018-01-10
  • 打赏
  • 举报
回复
头一会见,刚试了下,就是回调函数 可以写成int a(int b(int)),就更容易理解了 我还是太无知了
热血打工人 2018-01-10
  • 打赏
  • 举报
回复
int a(int b) a是函数名 b是a的整型实参
「已注销」 2018-01-10
  • 打赏
  • 举报
回复
第二种正确的书写应该是:
int a(int (*b)(int  c));
声明一个函数 a,参数为指向参数为 int 且返回值为 int 的函数的指针。如下面第一个函数就是符合该参数要求原型的函数。
int func1(int  c);           // 可简写为 int func1(int);
int func2(int (*b)(int  c)); // 可简写为 int func2(int (*)(int));
比如上述两个例子函数 func1(指针)可以作为 func2 的参数。上述两个函数可以以如下方式调用:
int res = func2(&func1);
啊哈moment 2018-01-10
  • 打赏
  • 举报
回复 2
int a ( in b ) 很好理解嘛 返回值为 int 类型的函数 参数为int 类型的形参 至于 第二个 int a (int b ( int c )) 就是多一层嵌套 不过没见过这种东西 还是学的比较少
「已注销」 2018-01-10
  • 打赏
  • 举报
回复
int main(int argc, char *argv); VS int a(int b); VS int abs(int n); 函数声明没见过吗?
AlbertS 2018-01-08
  • 打赏
  • 举报
回复
引用 5 楼 cfjtaishan 的回复:
应该是连个函数,从外向内依次是函数a,返回值int类型,参数类型是int类型(因为函数b的返回值是int类型),参数个数为1个;函数b返回值的是int类型,参数是int类型,参数个数为1个。
我感觉还是这种方法好
qq_41469439 2018-01-06
  • 打赏
  • 举报
回复
int //表示整数输入,所以。。。
自信男孩 2018-01-04
  • 打赏
  • 举报
回复
应该是连个函数,从外向内依次是函数a,返回值int类型,参数类型是int类型(因为函数b的返回值是int类型),参数个数为1个;函数b返回值的是int类型,参数是int类型,参数个数为1个。
赵4老师 2018-01-04
  • 打赏
  • 举报
回复
理解讨论之前请先学会如何观察
//char (*(*x[3])())[5];//x是什么类型的变量?
//
//分析C语言声明,关键是搞清楚这个变量是个什么东西(函数、指针、数组),
//是函数那么剩下的就是他的参数和返回值,
//是指针那剩下部分是说明他指向什么,
//是数组剩下的部分就是说明数组的成员是什么类型。
//解析C语言声明规则:
//从左侧第一个标识符开始,按照优先级进行结合。*表示是..的指针,const表示只读的,volatile表示可变的,[]表示是数组,()表示是函数。
//
//x和[3]结合说明是一个大小为3的数组,该数组的每个元素为一类指针,该类指针指向一类函数,该类函数无参数,返回一类指针,该类指针指向一个大小为5的char型数组
#include <stdio.h>
#include <typeinfo.h>
char num[5];
char (*x00())[5] {
    return #
}
int main() {
    char (*(*x[3])())[5];//是个数组,大小为3
    char (*(*x0  )())[5];//数组的元素,是个函数指针
    char (*( x00 )())[5];//函数原型,参数为空,返回值为指针
    char (*  x000   )[5];//返回值

    x0 = x00;
    x[0] = x0;
    x[1] = x0;
    x[2] = x0;
    printf("typeid(x).name() is %s\n",typeid(x).name());
    return 0;
}
//typeid(x).name() is char (* (__cdecl**)(void))[5]
leetow2006 2018-01-04
  • 打赏
  • 举报
回复
int a (int b (int c)) ;没有遇到过,现在学习了
Groves_Lin 2018-01-04
  • 打赏
  • 举报
回复
int a (int b (int c)),这个应该比较好理解,分解了看就可以,我觉得是这样的哈,函数a接收一个int的参数,返回值类型为int,参数为一个接收一个int参数,返回值类型为整形的函数
_C.L 2018-01-04
  • 打赏
  • 举报
回复
定义一个返回值为整型的函数a,a的形参是一个返回值为整型的函数b,b的形参为一个整形变量。
xskxzr 2018-01-04
  • 打赏
  • 举报
回复
int a (int b); // 声明一个形参是int,返回类型是int的函数 int a (int b (int c)) ; // 声明一个形参是int(int)(函数类型,作形参时会退化成函数指针),返回int的函数。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧