作者kilva (嗡嗡)
看板C_and_CPP
标题[问题] typedef对函数指标的用法
时间Sun May 17 20:35:09 2015
这是我在《透视C语言指标》这一书中看到的。
书中第76页型别定义了一函数指标,其定义方法如下:
typedef int (*fptr)(int, int);
上面的式子可定义出fptr这个新的型别(为一参数为两个整数,回传值为整数
的函数指标。)
这个型别可用来宣告、传入及传回函数指标,其中传入函数指标看起来就像
JavaScript中传入函数的用法一样,感觉蛮神奇的。(差别只在於C语言对型
别的要求还是比较强。)
请问,上面typedef的用法似乎和以前看过的用法不太一样,可以想成是与函
数指标有关的特殊用法吗?或是有其他更一般性的规范?
谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.35.183.244
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1431866115.A.53E.html
※ 编辑: kilva (114.35.183.244), 05/17/2015 20:38:03
1F:→ bibo9901: google "c right-left rule" 05/17 20:43
感谢回答,我上网查了一下後,发现我错在哪里了。
原本,我学的typedef用法为
typedef 资料型别 自订名称;
但这反而是最简单时的特例,真正的用法为
typedef 宣告;
如宣告一字串阵列 char *name[];
加上typedef後就变成了 typedef char *name[];
此处的name就成了一个新的字串阵列型别。
同理可推,函数指标的宣告为 int (*fptr)(int, int);
加上typedef後就变成了typedef int (*fptr)(int, int);
此处的fptr就成了一个新的函数指标型别。
※ 编辑: kilva (114.35.183.244), 05/17/2015 21:17:11
3F:→ EdisonX: 你的後半段还是在讲 自定义 , 而不是宣告 , 只是自定义 05/17 21:18
4F:→ EdisonX: 的资料型别变得复杂一点点而已。 05/17 21:18
5F:→ suhorng: 可惜这个函数指标比 javascript (or any function lang) 05/17 22:00
6F:→ suhorng: 的函数传来传去弱多了 05/17 22:00