background image

与其他指针变量相类似,如果指针变量 pi 是指向某整型变量 i 的指针,则*p 等于它所指
的变量 i;如果 pf 是指向某浮点型变量 f 的指针,则*pf 就等价于它所指的变量 f。同样地,
*f 是指向函数 func(x)的指针,则*f 就代表它所指向的函数 func。所以在执行了 f=func;之后,
(*f)和 func 代表同一函数。

由于函数指针指向存储区中的某个函数,因此可以通过函数指针调用相应的函数。现在我
们就讨论如何用函数指针调用函数,它应执行下面三步:

首先,要说明函数指针变量。

例如:int (*f)(int x);

其次,要对函数指针变量赋值。

 

例如: f=func;    (func(x)必须先要有定义)

 

最后,要用 (*指针变量)(参数表);调用函数。

例如:    (*f)(x);(x 必须先赋值)

【例】任意输入 n 个数,找出其中最大数,并且输出最大数值。

main()

{

        int f();

        int i,a,b;

        int (*p)();    /* 

 

定义函数指针 */

        scanf("%d",&a);

        p=f;            /* 给函数指针 p 赋值,使它指向函数 f */

        for(i=1;i<9;i++)

        {
                scanf("%d",&b);

                a=(*p)(a,b);    /* 通过指针 p 调用函数 f */

        }