|
发表于 2018-1-31 19:46:01
|
显示全部楼层
- #include <stdio.h>
- typedef void(*PTR_TO_FUN)(void);
- PTR_TO_FUN funA(int, PTR_TO_FUN);
- void (*funB(int, void (*pf)(void)))(void);
- void Test(void);
- int main(void)
- {
- funA(3, Test);
- printf("\n");
- funB(3, Test);
-
- printf("\n");
- funA(2, Test)();
- printf("\n");
- funB(2, Test)();
- printf("\n");
- funA(0, Test);
- printf("\n");
- funB(0, Test);
- printf("\n");
- funA(-1, Test);
- printf("\n");
- funB(-1, Test);
- return 0;
- }
- PTR_TO_FUN funA(int n, PTR_TO_FUN pf)
- {
- if(n < 0) // 只是一个测试,不然最后只返回pf没有意义,这样还算有点意义^_^
- return NULL;
- while(n--)
- {
- pf();
- }
- return pf;
- }
- void(*funB(int n, void(*pf)(void)))(void)
- {
- if(n < 0) // 只是一个测试,不然最后只返回pf没有意义,这样还算有点意义^_^
- return NULL;
- while(n--)
- {
- pf();
- }
- return pf;
- }
- void Test(void)
- {
- printf("Test\n");
- }
复制代码
- Test
- Test
- Test
- Test
- Test
- Test
- Test
- Test
- Test
- Test
- Test
- Test
- 请按任意键继续. . .
复制代码 |
|