鱼C论坛

 找回密码
 立即注册
查看: 3047|回复: 14

[已解决]s1e50 typedef的用法问题

[复制链接]
发表于 2018-1-31 14:18:47 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-31 19:17:40 | 显示全部楼层    本楼为最佳答案   
LICHT 发表于 2018-1-31 15:19
啊理解了理解了,typedef void (*PTR_TO_FUN)(void);是把PTR_TO_FUN定义为一个函数指针,这个指针指向一 ...

typedef void (*PTR_TO_FUN)(void);
PTR_TO_FUN funA(int,PTR_TO_FUN);

funA是一个函数,该函数有两个参数,第一个参数的类型是int,第二个参数的类型是PTR_TO_FUN,该函数有一个返回值,返回值的类型是PTR_TO_FUN

typedef void (*PTR_TO_FUN)(void); 不依赖 PTR_TO_FUN funA(int,PTR_TO_FUN); 没有 PTR_TO_FUN funA(int,PTR_TO_FUN);   ,typedef void (*PTR_TO_FUN)(void);照样存在
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-31 19:46:01 | 显示全部楼层
  1. #include <stdio.h>

  2. typedef void(*PTR_TO_FUN)(void);
  3. PTR_TO_FUN funA(int, PTR_TO_FUN);
  4. void (*funB(int, void (*pf)(void)))(void);
  5. void Test(void);

  6. int main(void)
  7. {
  8.         funA(3, Test);
  9.         printf("\n");
  10.         funB(3, Test);
  11.        
  12.         printf("\n");
  13.         funA(2, Test)();
  14.         printf("\n");
  15.         funB(2, Test)();

  16.         printf("\n");
  17.         funA(0, Test);
  18.         printf("\n");
  19.         funB(0, Test);

  20.         printf("\n");
  21.         funA(-1, Test);
  22.         printf("\n");
  23.         funB(-1, Test);

  24.         return 0;
  25. }

  26. PTR_TO_FUN funA(int n, PTR_TO_FUN pf)
  27. {
  28.         if(n < 0)        // 只是一个测试,不然最后只返回pf没有意义,这样还算有点意义^_^
  29.                 return NULL;

  30.         while(n--)
  31.         {
  32.                 pf();
  33.         }

  34.         return pf;
  35. }

  36. void(*funB(int n, void(*pf)(void)))(void)
  37. {
  38.         if(n < 0)        // 只是一个测试,不然最后只返回pf没有意义,这样还算有点意义^_^
  39.                 return NULL;

  40.         while(n--)
  41.         {
  42.                 pf();
  43.         }

  44.         return pf;
  45. }

  46. void Test(void)
  47. {
  48.         printf("Test\n");
  49. }
复制代码

  1. Test
  2. Test
  3. Test

  4. Test
  5. Test
  6. Test

  7. Test
  8. Test
  9. Test

  10. Test
  11. Test
  12. Test




  13. 请按任意键继续. . .
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-4-2 03:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表