我们可以如下形式声明一个函数指针的数组:
[C++] 纯文本查看 复制代码 int sum (int, int);
int total (int, int);
int sub (int, int);
int (*pfun[3])(int, int) = {sum, total, sub};
各个数组元素分别初始化为列表中对应的函数地址。比如,为了使用数组中第 2 个元素调用 total 函数,我们可以这样写:说明一点,由于 [] 的优先级比 * 要高,因此 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;
}
运行输出: |