主题:【新手求教】函数作函数参数的问题
输入两个数,通过三次调用fun()函数求其大者,小者,其和。代码如下:
#include<stdio.h>
#include<stdlib.h>
int max(int x,int y) //求大者
{
if(x<y) x=y;
return(x);
}
int min(int x,int y) //求小者
{
if(x>y) x=y;
return(x);
}
int add(int x,int y) //求和
{
return(x+y);
}
int fun(int x,int y,int (*f)(int x,int y))/* [color=008000] ① [/color] */
{
int r;
r=(*f)(x,y);
return(r);
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("max=%d min=%d add=%d\n",fun(a,b,max),fun(a,b,min),fun(a,b,add));
system("pause");
}
上述代码中,绿色①处,函数指针(*f)(int x,int y)改成f(int x,int y)在dev-c++中也能编译运行。
问:1,函数可以直接作为函数参数吗?还是因编译器而异?
2,如果可以,函数直接作为函数参数 与 函数指针做函数参数有什么区别?
#include<stdio.h>
#include<stdlib.h>
int max(int x,int y) //求大者
{
if(x<y) x=y;
return(x);
}
int min(int x,int y) //求小者
{
if(x>y) x=y;
return(x);
}
int add(int x,int y) //求和
{
return(x+y);
}
int fun(int x,int y,int (*f)(int x,int y))/* [color=008000] ① [/color] */
{
int r;
r=(*f)(x,y);
return(r);
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("max=%d min=%d add=%d\n",fun(a,b,max),fun(a,b,min),fun(a,b,add));
system("pause");
}
上述代码中,绿色①处,函数指针(*f)(int x,int y)改成f(int x,int y)在dev-c++中也能编译运行。
问:1,函数可以直接作为函数参数吗?还是因编译器而异?
2,如果可以,函数直接作为函数参数 与 函数指针做函数参数有什么区别?