8.5.4用指向函数的指针作函数参数

指向函数的指针变量的一个重要用途是把函数的地址作为参数传递到其他函数

书上给的例8.24将函数指针作为函数fun的形参,用于接收主函数传的实参(实参为函数名funx),这样使函数调用别的函数的时候,是把别的函数名作为函数的参数进行调用,符合结构化程序设计中的模块化设计原则,体现了模块的独立性,即使用一个模块完成一项功能,耦合性少。

在主函数中调用fun函数,函数fun没有改变,改变的只是实参的函数名。

这个fun函数就可以用于编写一个通用函数实现各种专用的功能。

下面给出定积分的通用函数float integral(float a,float b,float(*fun)(float,float));

这个和定积分关系不大,一个函数式罢了。然后编写不同的fun2,fun3...实现2x+3,e^x+1..函数功能。

这样,这个函数指针体现了一种总结,概括函数的功能,为主函数提供函数入口

/*
    8.5指向函数的指针
    8.5.4用指向函数的指针做函数参数
    编写一个求定积分的通用函数
    求1+x对于x在a到b的积分
     2x+3
     e^x+1
     (1+x)^2
     x^3
*/

#include <stdio.h>


void main()
{
    #if 1
    float integral(float a,float b,float(*fun)(float,float));
    float fun1(float a,float b);
    register int n=1,a=1,b=2;
    float result;
    if(n==1) result=integral(a,b,fun1);
    printf("%f",result);

    #else
    
    
    #endif
}

float fun1(float a,float b)
{
    float x1=a,x2=b,y1,y2,y;
    y1=x1+1/2.0*x1*x1;
    y2=x2+1/2.0*x2*x2;
    y=y2-y1;
    return y;
}

float integral(float a,float b,float(*fun)(float,float))
{
    float result=(*fun)(a,b);
    return result;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值