指向函数的指针变量作函数参数

来源:岁月联盟 编辑:zhu 时间:2009-02-20
   指向函数的指针变量主要用于作函数参数,以实现“函数”作函数的参数,便于编制通 用程序。此时形参用指向函数的指针变量,而实参是实际函数的入口地址(函数名),当然 实参也可以是指向实际函数的指针变量。 


    例编制程序,调用一个多功能函数,对于最大值函数参数,求两个数的最大  值;对于最小值函数参数,求两个数的最小值。 
    程序如下: 


    /*指向函数的指针变量作函数参数*/ 
    main() 
    {int max(),min(),fun(); 
    int a,b; 
    scanf(”%d,%d”,&a,&b); 
    printf(”最大值=”); 
    fun(a,b,max); 
    printf(”最小值=”); 
    fun(a,b,min); 
    } 
    max(x,y)/*最大值函数*/ 
    int X,Y; 
     {if(x>y)return(x); 
    else return(y);

    }
    min(x,y∥*最小值函数*/
    int X,Y;
    {if(x<y)return(x);
    else return(y);
    }
    {un(x,Y,p)/*多功能函数*/
    int X,Y;
    int(*p)();/*P参数为指向整型函数的指针变量*/
    {int result;
    result=(*p)(x,y);/*通过指针调用函数*/
    print{(”%d\n”,result)}
    }
    输入数据:28,32
    运行结果:最大值一32最小值一28
    第一次调用fun()函数时,除了将a、b的值传递给X、Y,还将函数max()的入口地址(max)传递给指向函数的指针变量P,这时函数fun()中的(*p)(x,y)相当于max(x,y)。
    第二次调用fun()函数时,a、b的值同样传递给x、Y,另改用函数rain()的入口地址(min)传递给指向函数的指针变量P,这时函数fun()中的(*p)(x,y)相当于min(x,y)。
    本例这样做无太多实际意义,主要使读者认识指向函数的指针变量作函数参数的做法。请读者进一步参阅本章最后一节的通用积分程序。

图片内容