C_and_CPP 板


LINE

举个小例子 typedef int(*funPtr)(int, int); int add(int a,int b) { return a + b; } int sub(int a, int b) { return a - b; } void Math(funPtr callback) { printf("Time to Math class, result = %d\n", callback(5, 1)); } int main() { Math(add); Math(sub); char c = getchar(); return 0; } 其中的 Math(add) 该怎麽叙述他呢? Ans1: 我把add注册到Math里面 Ans2: add 是一个callback func 并放到 Math 里面 大家听到callback func就知道这func是引数的意思吗? 不好意思 新手问题 谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 150.117.206.89
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1492845281.A.922.html
1F:→ x000032001: 2 你并没有注册他 只是传进去 1很奇怪 04/22 15:24
2F:推 cuteSquirrel: Math(add)是把add这只function的以function pointer 04/22 15:45
3F:→ cuteSquirrel: 的形式传入Math的参数列。让里面的Math呼叫可以用fu 04/22 15:45
4F:→ cuteSquirrel: nction pointer来呼叫add, 做两数相加的加法运算。 04/22 15:45
5F:→ cuteSquirrel: Function pointer 提供了一种弹性的函数呼叫方式。 04/22 15:50
6F:→ cuteSquirrel: 以原po的例子来说,可以再实作两个数学函数,mul做 04/22 15:50
7F:→ cuteSquirrel: 乘法,div做除法。扩展成一个小型的四则运算程式。 04/22 15:50
8F:推 cuteSquirrel: Callback function在原po的例子里是add和sub. add和 04/22 15:56
9F:→ cuteSquirrel: sub这两个以function pointer传入Math(), 在Math() 04/22 15:56
10F:→ cuteSquirrel: 里面被呼叫。 04/22 15:56
cuteSquirrel: Ans2比较贴近原po的例子。 谢谢两位 我只是好奇我告诉别人说 add & sub 是callback func 这样我同事们就知道这是要被当作func pointer传入其他func作为引数吗? 因为连我自己都无法定义清楚了 冏 ※ 编辑: EngRookie (150.117.206.89), 04/22/2017 16:22:22
11F:推 kyuudonut: 我觉得改一下函数命名会比较好阅读一点 04/22 19:17
12F:推 s89227: 在其他语言好像叫delegate? 04/22 22:47
13F:推 cuteSquirrel: 推。像是c#的delegate 04/22 23:20
14F:→ uranusjr: 不过 delegate 在某些语境下又会有完全不同的意思 XD 04/22 23:31
15F:推 steve1012: 应该知道吧 04/22 23:45
16F:推 loveflames: C++讲delegate,我第一个想到的是delegating ctor 04/23 08:26
17F:推 CoNsTaR: higher-order function 04/24 19:18
19F:→ Chikei: 不过用higher-order有不小的机会会被问这是啥意思...XD 04/25 01:17
20F:推 Neisseria: higher-order function +1 04/25 09:40
21F:→ ah7675: 每次都要搞名词解释 真的很烦 04/26 00:12
22F:→ ah7675: 是不是都用名词当斗争工具? 讲赢定义的人是老大? 04/26 00:12
23F:推 CoNsTaR: 楼上 这里的老大只有一个喔 请去拜见水晶球神 04/26 05:38
24F:推 CoNsTaR: 不过这篇本来就是在问名词,给名词解释问题在哪? 04/26 05:40
25F:推 ronin728: 只传函数进去不算callback,必须是要是下个流程才算(CPS 04/26 11:29
26F:→ ronin728: 也就说传进来的函数也必定只能以tail call的方式使用 04/26 11:39
27F:推 Killercat: 你可以查一下学一下functor, 近代的c++多半用这结构 04/26 22:37
28F:→ Killercat: 体来表示一个function 而不是把point of function传入 04/26 22:37
29F:→ Killercat: 优点很多,包括了简易的型别安全以及易用性 可以学一下 04/26 22:39
30F:→ Killercat: C++11以前须用boost::function,11後有std::function 04/26 22:41
31F:→ Killercat: https://tinyurl.com/7lsdvjj 04/26 22:41
32F:推 Sidney0503: 名词是设计者的问题 template在c++ java不一样 04/27 07:23
33F:→ Sidney0503: apply bind在c++ js不一样 04/27 07:23
34F:→ Sidney0503: for each拿到index还是内容物 在py js不一样 04/27 07:27
35F:→ Sidney0503: 不过打架久了大家也渐渐知道 先说是哪家语言的定义 04/27 07:29
36F:→ Sidney0503: 如果你觉得烦 那就可以加入语言开发社群或委员 04/27 07:30
37F:→ Sidney0503: 出一份力改善这种到处不一样的状况 04/27 07:31
38F:→ Chikei: 名词解释有啥好烦的,难道要吵一架吵完之後才发现两个人跟 04/27 11:25
39F:→ Chikei: 本是在讲不同的东西只是刚好共用名词有比较好吗XDD 04/27 11:26
40F:推 CoNsTaR: 通常在讨论语言特性的时候会用higher-order function 04/27 12:30
41F:→ CoNsTaR: 用 category 讨论程式实作会用 functor 这个词 04/27 12:30
42F:→ CoNsTaR: 虽然这两个词在 theorical computer science 里实际上指 04/27 12:30
43F:→ CoNsTaR: 的是同一个东西,但是在不同情境下我们会用不同的词来讨 04/27 12:30
44F:→ CoNsTaR: 论 04/27 12:30
45F:→ CoNsTaR: 另外, functor 还分 contravariant、 convariant 两种, 04/27 12:30
46F:→ CoNsTaR: 但 higher-order function 就没讨论这麽多了 04/27 12:30
47F:→ CoNsTaR: 不过 functor 在很多语言里已经有自己的意思了,和 TSC 04/27 12:30
48F:→ CoNsTaR: 里的定义不同 04/27 12:30
49F:推 CoNsTaR: functor 虽然也可以传入、回传函数,但是专指这样的函数 04/27 12:45
50F:→ CoNsTaR: 会用 higher-order function 来称呼 04/27 12:45







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP