指针函数:对2个数进行加减乘除,结果怎么不对啊!

来源:百度知道 编辑:UC知道 时间:2024/06/12 04:08:49
#include<stdio.h>
int add(int a,int b);
int sub(int a,int b);
int mul(int a,int b);
int div(int a,int b);
void result(int (* pf)(),int a,int b);此句int (*pf)与下面void result(int(* p)(),int a,int b)中的int (*p)不同啊?
main()
{
int i,j;
int (* pf)();
printf("input 2:\n");
scanf("%d,%d",&i,&j);
pf=add;
result(pf,i,j);
pf=sub;
result(pf,i,j);
pf=mul;
result(pf,i,j);
pf=div;
result(pf,i,j);
pf=result;
printf("\n");
}
int add(int a,int b)
{
return a+b;
}
int sub(int a,int b)
{
return a-b;
}
int mul(int a,int b)
{
return a*b;
}
int div(int a,int b)
{
return a/b;
}
void result(int(* p)(),int a,int b)
{
int value;
value=(* p)(a,b);
printf("%d\t",value);
}

运行,没问题:
----------------------------------------------------------------------------------------
#include<stdio.h>
int add(int a,int b);
int sub(int a,int b);
int mul(int a,int b);
int div(int a,int b);
void result(int (* pf)(),int a,int b);
main()
{
int i,j;
int (* pf)();
printf("input 2:\n");
scanf("%d,%d",&i,&j);
pf=add;
result(pf,i,j);
pf=sub;
result(pf,i,j);
pf=mul;
result(pf,i,j);
pf=div;
result(pf,i,j);
printf("\n");
getch();
}
int add(int a,int b)
{
return a+b;
}
int sub(int a,int b)
{
return a-b;
}
int mul(int a,int b)
{
return a*b;
}
int div(int a,int b)
{
return a/b;
}
void result(int(* p)(),int a,int b)
{
int value;
value=(* p)(a,b);
printf("%d\t",value);