C语言 当函数作为形参的时候 能把函数名作为实参传递给形参吗
答案:2 悬赏:60 手机版
解决时间 2021-02-13 09:24
- 提问者网友:黑米和小志
- 2021-02-12 16:19
C语言 当函数作为形参的时候 能把函数名作为实参传递给形参吗
最佳答案
- 五星知识达人网友:西岸风
- 2021-02-12 16:58
int fun(int x,int y,int f(int,int))
{
int result;
result=f(x,y);
printf("%d
",result);
return result;//<---------------------
}追问为什么要写return resulet:?不是直接输出吗?把result回传有什么意义?追答没有意义啊,可是是你自己把函数返回值设成int的,所以必须要有返回值,要不然直接修改为void追问改成void就可以了,这么一来感觉用指向函数的指针作函数的形参意义就没那么大了啊?因为函数名max作为实参可以直接传给被调用函数中的形参函数int f(int,int),而没必要把形参函数换成int (*f)(int,int)来接收实参函数名max的值了。
{
int result;
result=f(x,y);
printf("%d
",result);
return result;//<---------------------
}追问为什么要写return resulet:?不是直接输出吗?把result回传有什么意义?追答没有意义啊,可是是你自己把函数返回值设成int的,所以必须要有返回值,要不然直接修改为void追问改成void就可以了,这么一来感觉用指向函数的指针作函数的形参意义就没那么大了啊?因为函数名max作为实参可以直接传给被调用函数中的形参函数int f(int,int),而没必要把形参函数换成int (*f)(int,int)来接收实参函数名max的值了。
全部回答
- 1楼网友:杯酒困英雄
- 2021-02-12 17:22
#include
int max(int a,int b)
{
return a>b? a: b;
}
int min(int a,int b)
{
return a}
int fun(int x,int y,int f(int,int))
{
int result;
result=f(x,y);
printf("%d\n",result);
}
int main(int argc, char *argv[])
{
int n=1, a=3, b=5;
if(n==1)
{fun(a,b,max);}
else{fun(a,b,min);} //<==== 这儿不能写成else括号 "else(n==2) fun(a,b,min);"
return 0;
}
int max(int a,int b)
{
return a>b? a: b;
}
int min(int a,int b)
{
return a}
int fun(int x,int y,int f(int,int))
{
int result;
result=f(x,y);
printf("%d\n",result);
}
int main(int argc, char *argv[])
{
int n=1, a=3, b=5;
if(n==1)
{fun(a,b,max);}
else{fun(a,b,min);} //<==== 这儿不能写成else括号 "else(n==2) fun(a,b,min);"
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯