鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[知识点备忘] S1E30:指针函数和函数指针

[复制链接]
发表于 2020-4-16 16:03:19 | 显示全部楼层
本帖最后由 Cool_Breeze 于 2020-4-16 16:31 编辑
  1. #include <stdio.h>
  2. int add(int ,int);
  3. int sub(int ,int);
  4. int (* p(char opt)\
  5. /*
  6.         p(char opt) 表示函数p有一个参数是char类型,返回值是函数的指针int(*)(int,int)

  7. */
  8. )(int,int);
  9. int call(int (*mp)(int,int)\
  10. /*
  11.         这个参数就是函数指针;
  12. */
  13. , int a, int b);

  14. int main(void)
  15. {
  16.         int a=10,b=5;
  17.         int (*methodp)(int,int);//创建一个函数指针;
  18.         methodp=p('+');//p在前面已经声明了(p的返回类型就是函数指针);
  19.         printf("%d + %d = %d\n",a,b,call(methodp,a,b));
  20.         printf("%d - %d = %d\n",a,b,call(methodp=p('-'),a,b));
  21.         return 0;
  22. }

  23. int add(int a, int b)
  24. {
  25.         return a+b;
  26. }
  27. int sub(int a, int b)
  28. {
  29.         return a-b;
  30. }
  31. int call(int (*mp)(int,int),int a,int b)
  32. {
  33.         return mp(a,b);
  34. }
  35. int (* p(char opt))(int,int)
  36. {
  37.         switch (opt)
  38.         {
  39.                 case '+' : return add;
  40.                 case '-' : return sub;
  41.         }
  42. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 11:32:32 | 显示全部楼层
MARK,回头再看看视频
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 00:51:06 From FishC Mobile | 显示全部楼层
我要吃肉肉 发表于 2018-8-7 12:18
#include

int a,b,c;

#include <stdio.h>

int a,b,c;

void main()

{
        int max(int,int);
        int min(int,int);
        int sum(int,int);

        void process(int x,int y,int(*fun)());

        
        printf("plsase input a&b:");
        scanf("%d,%d",&a,&b);
        process(a,b,max);
}
void process(int x,int y,int(*fun)())
{
       c=max(a,b);
       printf("max=%d\n",c);
       c=min(a,b);
       printf("min=%d\n",c);
       c=sum(a,b);
       printf("sum=%d\n",c);
}
int max(int x,int y)
{

        if(a>b)
        {
                return a;
        }
        else
        {
                return b;
        }
}

int min(int x,int y)
{
        if(a<b)
        {
                return a;
        }
        else
        {
                return b;
        }
}

int sum(int x,int y)
{
        int add;
        add=a+b;
        return add;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-6 13:36:49 From FishC Mobile | 显示全部楼层
Jundong-4316 发表于 2019-3-5 20:51
函数指针作为参数

#include

你这样一讲我终于明白了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-19 23:06:25 | 显示全部楼层
打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-20 22:41:12 | 显示全部楼层
打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-24 13:11:45 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-5 10:21:43 | 显示全部楼层
好好学习咯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-28 14:49:51 | 显示全部楼层
我裂开了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-29 15:14:49 | 显示全部楼层
讲得好!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-26 15:30:50 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-11 14:52:07 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-1 17:35:24 | 显示全部楼层
好好学习才能天天向上!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-2 13:58:32 | 显示全部楼层
好好学习才能天天向上!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 12:35:15 | 显示全部楼层
划重点:函数的类型就是函数的返回值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-16 15:47:55 | 显示全部楼层
事实证明我是个普通人,以后就不要 自以为是了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-2 21:33:55 | 显示全部楼层
我的头快要裂开了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-24 10:29:57 | 显示全部楼层
calc不写也能运行,为什么要多写这一步
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-28 17:46:10 | 显示全部楼层

你这个每次都把max,min,sum输出了一遍,process函数里面只写printf("%d\n",(*fun)(x,y));就行.
你这个process函数只是每次输出一个,你里面不能啥都有。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-6 17:29:05 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 14:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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