曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3926|回复: 0
打印 上一主题 下一主题

函数指针的数组

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2013-7-5 01:03:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以如下形式声明一个函数指针的数组:
[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
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-4-28 04:41 , Processed in 0.079489 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表