c语言程序出现 invalid conversion from 'int (*)(int, int)' to 'int (*)()' [-fpermissive] 的错误

#include <stdio.h>
int main()
{
void process(int x,int y,int (*fun)());
int a,b;
int max(int ,int );
int min(int ,int );
int add(int ,int );
printf("input a&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=y;
else
z=x;
return z;
}
int add(int x,int y)
{
int z;
z=x+y;
return z;
}

指针与变量不能直接赋值,只有(*q)才能和变量进行赋值,并且必须先给指针分配内存空间,所以直接把q=i编程(*q)=i是不行的。
有两种该法:
#include
#include"stdlib.h"
int main()
{
int i,j,k;
int *q;
q=(int*)malloc(sizeof(int));
scanf("%d %d %d",&i,&j,&k);
if(i>j)
{
if(i>k)
*q=i;
else
*q=k;
}
else
*q=j;
printf("%d",*q);
return 0;
system("pause");
}
这样就行了
或者是#include
#include"stdlib.h"
int main()
{
int i,j,k;
int *q;
scanf("%d %d %d",&i,&j,&k);
if(i>j)
{
if(i>k)
q=&i;
else
q=&k;
}
else
q=&j;
printf("%d",*q);
return 0;
system("pause");
}
楼上几位好像没有给指针分配空间,所以有点小瑕疵,哈哈
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-11-20
您好,您定义了一个指向[返回值是int型,没有参数的函数]的指针,却用它指向[返回值是int,有两个int型参数的函数]所以不行,匹配了就好了
第2个回答  2018-01-05
参数类型错误,至于你追问的strcmp,strcpy是对应字符串的,不是对应字符的。。。不能那么用
第3个回答  2018-01-05
这个问题就是检测, . ;大家看好了到底怎么干到底为什么