曲径通幽论坛

标题: 函数指针的数组 [打印本页]

作者: beyes    时间: 2013-7-5 01:03
标题: 函数指针的数组
我们可以如下形式声明一个函数指针的数组:
[C++] 纯文本查看 复制代码
int sum (int, int);
int total (int, int);
int sub (int, int);
int (*pfun[3])(int, int) = {sum, total, sub};

各个数组元素分别初始化为列表中对应的函数地址。比如,为了使用数组中第 2 个元素调用 total 函数,我们可以这样写:
pfun[1] (10, 20);
说明一点,由于 [] 的优先级比 * 要高,因此 pfun 先与 [] 结合,于是我们认为 pfun 是一个数组,并且 *pfun[3] ,那么我们知道 pfun[] 这个数组中存储的是指针,至于是什么样的指针,整体展开来看就是函数的指针。

测试代码:
[C++] 纯文本查看 复制代码
#include <stdio.h>
int sum (int, int);
int total (int, int);
int sub (int, int);


int main()
{
    int (*pfun[3])(int, int) = {sum, total, sub};
    int rev;


    rev = pfun[1] (10, 20);
    printf ("%d\n", rev);


    return 0;
}


int sum (int a, int b)
{
    return a + b;
}


int total (int a, int b)
{
    return a * b;
}


int sub (int a, int b)
{
    return a - b;
}

运行输出:
200





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2