返回函数指针

yqj2065 2018-01-15 12:33:29
C语言现在能不能写嵌套函数啊?

例如打印0到x的,符合what_test条件的数。
void solve2(int x,_Bool(* what_test)(int)) {
for (int i = 0; i < x; i++) {
if (what_test(i)) {
printf("%d ",i);
}
}
}


如果我想编写多个条件函数的and,or并将结果——一个函数传递给solve2,怎样搞?
...全文
493 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Saleayas 2018-01-18
  • 打赏
  • 举报
回复
你的确需要这么写一个静态的函数。 如果确实需要像lambda 那样的话,最好添加一个 void * 这样的参数。 这个参数就像回调函数的用户参数一样,也像 C++ 的 this 一样。 这样你可以在呼叫函数之前,定义一个结构,在结构里面设置 left operator right 这三个参数。 然后根据这参数参数去调用指定的函数,这用户指针就是这个结构的地址。
yqj2065 2018-01-18
  • 打赏
  • 举报
回复
引用 12 楼 TDTO_O 的回复:
可以将函数作为函数参数传入呀,然后再外面定义你需要用到的函数。楼主写的没问题呀,只要你那个what的函数指针指向的函数在外面实现了的话还是能用的。
我想做的是,编写函数 Test and( Test t1, Test t2)
TTT_Alone 2018-01-17
  • 打赏
  • 举报
回复
可以将函数作为函数参数传入呀,然后再外面定义你需要用到的函数。楼主写的没问题呀,只要你那个what的函数指针指向的函数在外面实现了的话还是能用的。
paschen 2018-01-15
  • 打赏
  • 举报
回复
不能嵌套函数(在函数中定义函数),你可以将指向不同的函数(如and,or...)指针作为参数传递给另一个函数,然后在该函数中使用函数指针调用相应的函数
赵4老师 2018-01-15
  • 打赏
  • 举报
回复
嵌套函数是语法糖。 语法糖越甜,编译调试查错越苦! 把有限的生命浪费在品尝/品鉴无穷多种的语法糖中,我认为不值当。
自信男孩 2018-01-15
  • 打赏
  • 举报
回复
引用 3 楼 faihung 的回复:
引用 2楼faihung 的回复:
不能以那样搞,因为函数分配在栈空间里,函数调用完了,就会释放掉。
也就是说返回函数的指针没有任何意义,除非你给这个指针加上static
函数指针指向的是函数的首地址(执行函数的开始位置),返回了函数指针为什么就没有意义了呢?使用函数指针就是对相应函数的重新调用,怎么会出现没有意义了呢?
自信男孩 2018-01-15
  • 打赏
  • 举报
回复
嵌套函数,如果是定义肯定是不行的。 如果想实现不同的条件下调用对应的函数,可以做成函数指针数组,即有函数指针组成的数组。
真相重于对错 2018-01-15
  • 打赏
  • 举报
回复
可以,百度 stl::sort
faihung 2018-01-15
  • 打赏
  • 举报
回复
不能以那样搞,因为函数分配在栈空间里,函数调用完了,就会释放掉。
faihung 2018-01-15
  • 打赏
  • 举报
回复
引用 2楼faihung 的回复:
不能以那样搞,因为函数分配在栈空间里,函数调用完了,就会释放掉。
也就是说返回函数的指针没有任何意义,除非你给这个指针加上static
赵4老师 2018-01-15
  • 打赏
  • 举报
回复
想写嵌套函数请使用javascript,嵌套死你!
yqj2065 2018-01-15
  • 打赏
  • 举报
回复
我想做的是,编写函数 Test and( Test t1, Test t2)
yqj2065 2018-01-15
  • 打赏
  • 举报
回复
_Bool f1(int n){ } //代码略 n为3的倍数 _Bool f2(int n){ } //n含5 _Bool f3(int n){ } 打印满足f1 or f2 and f3,我有一个笨办法: _Bool test(int n){ return f1(n) || f2(n) && f3(n) } 然后用test为solve2的实参
yqj2065 2018-01-15
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
嵌套函数是语法糖。 语法糖越甜,编译调试查错越苦! 把有限的生命浪费在品尝/品鉴无穷多种的语法糖中,我认为不值当。
还活在这里啊。

69,371

社区成员

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

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