- 论坛徽章:
- 0
|
- #include "include/apue.h"
- typedef int mf(void);
- int test1(void);
- int test(mf *fp)
- {
- return fp();
- }
- int main(int argc,char * argv[])
- {
- printf("%d\n",test(test1));
- exit(0);
- }
- int test1(void)
- {
- return 3;
- }
复制代码
上面的代码正确,我的理解如下:
typedef定义了一种函数类型mf,此时并没有此类型真正的函数。
在test函数的定义中,我们发现它需要一个参数,此参数是指向mf类型的函数的指针,而test1函数正好是mf类型的函数,而test1正好是这种函数的地址(函数名即是函数地址),故而可以把test1传递给test函数。
- #include "include/apue.h"
- typedef int mf(void);
- mf test1;
- int test(mf *fp)
- {
- return fp();
- }
- int main(int argc,char * argv[])
- {
- printf("%d\n",test(test1));
- exit(0);
- }
- int test1(void)
- {
- return 3;
- }
复制代码
此段代码也正确,结果以上面的相同。理解如下:
mf test1声明了一个函数test1,说明此函数是mf类型的函数。但是此处为什么是mf test1,而不是mf *test1呢? |
|