回 帖 发 新 帖 刷新版面

主题:[讨论]救急!!!c语言函数参数能否为函数

各位高手或新手,讨论下,一个函数能否作为另一个函数的参数?
下面是我在一本书上看到的代码,貌似将函数作为了另一函数的参数。已通过运行。
谁对这方面了解得说一下。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void evaluate(double f(double f_arg),double pt1,double pt2,double pt3);
int main()
{
    evaluate(sqrt,0.25,25.0,100.0);//sqrt不是一函数吗?
    system("PAUSE");
    return 0;
}
void evaluate(double f(double f_arg),double pt1,double pt2,double pt3)
{
     printf("f(%.5f)=%.5f\n",pt1,f(pt1));
     printf("f(%.5f)=%.5f\n",pt2,f(pt2));
     printf("f(%.5f)=%.5f\n",pt3,f(pt3));
     }

回复列表 (共4个回复)

沙发


为什么没人回复呢?

板凳

可以的。。函数名实质是指针,不过含义比较特殊而已。,。一般函数作为参数 是用函数所返回的值。。

3 楼

不奇怪. 编译器解释为这样:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

typedef double (*P_FUN)(double);
void evaluate(P_FUN fun, double pt1, double pt2, double pt3);

int main()
{
    evaluate(sqrt,0.25,25.0,100.0);//没错, sqrt就是一函数
    system("PAUSE");
    return 0;
}
void evaluate(P_FUN fun ,double pt1,double pt2,double pt3)
{
    printf("f(%.5f)=%.5f\n",pt1,fun(pt1));
    printf("f(%.5f)=%.5f\n",pt2,fun(pt2));
    printf("f(%.5f)=%.5f\n",pt3,fun(pt3));
}

4 楼

谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册