鱼C论坛

 找回密码
 立即注册
查看: 836|回复: 9

[已解决]求助,指向函数的指针作函数参数

[复制链接]
发表于 2020-8-5 21:19:24 | 显示全部楼层 |阅读模式
10鱼币
看旧版小甲鱼老师的视频47,最后那个程序用的DEV C++写的,但总是报错
#include <stdio.h>

int main()
{
        int max(int, int);
        int min(int, int);
        int add(int, int);
       
        void process(int x, int y, int(*fun)());
       
        int a, b;
        printf("Enter a and b: ");
        scanf("%d, %d", &a, &b);
       
        printf("max = ");
        process(a, b, max);
       
        printf("min = ");
        process(a, b, min);
       
        printf("sum = ");
        process(a, b, add);
}

int max(int x, int y)
{
        int z;
        if(x > y)
        {
                z = x;
        }
        else
        {
                z = y;
        }
        return z;
}

int min(int x, int y)
{
        int z;
        if(x < y)
        {
                z = x;
        }
        else
        {
                z = y;
        }
        return z;
}

int add(int x, int y)
{
        int z;
        z = x + y;
    return z;
}

总是这个错误    [Error] invalid conversion from 'int (*)(int, int)' to 'int' [-fpermissive]
有人说 不匹配或者数据分配空间,但是我这个菜鸟不太懂
希望大佬指教
最佳答案
2020-8-5 21:19:25
#include <stdio.h>

int main()
{
    int max(int, int);
    int min(int, int);
        int add(int, int);
         
        void process(int x, int y, int(*fun)(int, int));
        
        int a, b;
        printf("Enter a and b: ");
        scanf("%d %d", &a, &b);
         
        printf("max = ");
        process(a, b,max);
         
        printf("min = ");
        process(a, b,min);
         
        printf("sum = ");
        process(a, b, add);
        
        return 0;
}

int max(int x, int y)
{
    int z;
    if(x > y)
    {
        z = x;
    }
    else
    {
            z = y;
    }
    return z;
}

int min(int x, int y)
{
        int z;
        if(x < y)
        {
                z = x;
        }
        else
        {
                z = y;
        }
        return z;
}

int add(int x, int y)
{
    int z;
    z = x + y;
    return z;
}
void process(int x, int y, int(*fun)(int, int))
{
        printf("%d\n",fun(x,y));
        return ;
}

最佳答案

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-5 21:19:25 | 显示全部楼层    本楼为最佳答案   
#include <stdio.h>

int main()
{
    int max(int, int);
    int min(int, int);
        int add(int, int);
         
        void process(int x, int y, int(*fun)(int, int));
        
        int a, b;
        printf("Enter a and b: ");
        scanf("%d %d", &a, &b);
         
        printf("max = ");
        process(a, b,max);
         
        printf("min = ");
        process(a, b,min);
         
        printf("sum = ");
        process(a, b, add);
        
        return 0;
}

int max(int x, int y)
{
    int z;
    if(x > y)
    {
        z = x;
    }
    else
    {
            z = y;
    }
    return z;
}

int min(int x, int y)
{
        int z;
        if(x < y)
        {
                z = x;
        }
        else
        {
                z = y;
        }
        return z;
}

int add(int x, int y)
{
    int z;
    z = x + y;
    return z;
}
void process(int x, int y, int(*fun)(int, int))
{
        printf("%d\n",fun(x,y));
        return ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-5 21:26:46 From FishC Mobile | 显示全部楼层
试试把void process(int x, int y, int(*fun)());
改成 void process(int x, int y, int(*fun)(int, int));
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-5 21:29:02 | 显示全部楼层
本帖最后由 baige 于 2020-8-5 22:00 编辑

。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-5 22:23:50 | 显示全部楼层
我服了,被scanf()里面的逗号坑了,我还以为我哪里写错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-8-5 22:26:19 | 显示全部楼层

是最后一步忘了调用process 函数了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-5 22:28:02 | 显示全部楼层
改成 void process(int x, int y, int(*fun)(int, int));
然后把这个函数实现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-5 22:28:37 | 显示全部楼层
实现部分
void process(int x, int y, int(*fun)(int, int))
{
        printf("%d\n",fun(x,y));
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-5 22:31:12 | 显示全部楼层
可以的话给个最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-8-5 22:37:35 | 显示全部楼层
baige 发表于 2020-8-5 22:31
可以的话给个最佳

弄好了,谢谢大佬,最佳安排上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 10:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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