求助,指向函数的指针作函数参数
看旧版小甲鱼老师的视频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]
有人说 不匹配或者数据分配空间,但是我这个菜鸟不太懂
希望大佬指教 #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 ;
} 试试把void process(int x, int y, int(*fun)());
改成 void process(int x, int y, int(*fun)(int, int)); 本帖最后由 baige 于 2020-8-5 22:00 编辑
。。。 我服了,被scanf()里面的逗号坑了,我还以为我哪里写错了 baige 发表于 2020-8-5 22:22
是最后一步忘了调用process 函数了吗 改成 void process(int x, int y, int(*fun)(int, int));
然后把这个函数实现 实现部分
void process(int x, int y, int(*fun)(int, int))
{
printf("%d\n",fun(x,y));
} 可以的话给个最佳 baige 发表于 2020-8-5 22:31
可以的话给个最佳
弄好了,谢谢大佬,最佳安排上{:5_110:}
页:
[1]