wlp1818100227 发表于 2020-8-5 21:19:24

求助,指向函数的指针作函数参数

看旧版小甲鱼老师的视频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;
}

总是这个错误    invalid conversion from 'int (*)(int, int)' to 'int' [-fpermissive]
有人说 不匹配或者数据分配空间,但是我这个菜鸟不太懂
希望大佬指教

baige 发表于 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 ;
}

Unicorn# 发表于 2020-8-5 21:26:46

试试把void process(int x, int y, int(*fun)());
改成 void process(int x, int y, int(*fun)(int, int));

baige 发表于 2020-8-5 21:29:02

本帖最后由 baige 于 2020-8-5 22:00 编辑

。。。

baige 发表于 2020-8-5 22:23:50

我服了,被scanf()里面的逗号坑了,我还以为我哪里写错了

wlp1818100227 发表于 2020-8-5 22:26:19

baige 发表于 2020-8-5 22:22


是最后一步忘了调用process 函数了吗

baige 发表于 2020-8-5 22:28:02

改成 void process(int x, int y, int(*fun)(int, int));
然后把这个函数实现

baige 发表于 2020-8-5 22:28:37

实现部分
void process(int x, int y, int(*fun)(int, int))
{
        printf("%d\n",fun(x,y));
}

baige 发表于 2020-8-5 22:31:12

可以的话给个最佳

wlp1818100227 发表于 2020-8-5 22:37:35

baige 发表于 2020-8-5 22:31
可以的话给个最佳

弄好了,谢谢大佬,最佳安排上{:5_110:}
页: [1]
查看完整版本: 求助,指向函数的指针作函数参数