一、函数指针数组
1.1函数指针数组的声明
函数指针数组的声明如下,所谓函数指针数组就是在之前的函数指针的基础上增加了[],由于[]的优先级高于*,故 pf先与[]结合,说明它是一个数组,再与*结合说明数组中的元素的类型是指针,再看后面的参数列表,说明每一个指针都指向一个函数的入口地址,并且指向的函数的返回类型为int。
int (*pf[])(int, int);
1.2函数指针的使用
以下代码展示了函数指针数组的一个简单的应用。
#include <stdio.h>
int Add(int x, int y)
{
return x + y;
}
int Sub(int x, int y)
{
return x - y;
}
int main()
{
int a = 10;
int b = 20;
//定义一个有2个指针的数组,指针指向一个函数,该函数有两个整型参数并返回一个整型数
int(*p[2])(int, int);
p[0] = Add; //函数指针数组的第一个元素指向Add函数
p[1] = Sub;
printf("%d, %d\n", p[0](a, b), p[1](a, b));
system("pause");
return 0;
}
二、指向函数指针数组的指针
在此,仅作介绍,它也叫函数指针数组的指针。下面的定义怎么理解呢?首先,p和*结合说明是一个指针,之后与[]结合,说明是一个数组指针,再与*结合说明用一个指针指向了数组指针,之后又指向了一个函数的入口地址,该函数有两个int类型参数,返回值是int。
int (*(*p)[])(int, int);
总而言之,指向函数指针数组的指针就是在函数指针数组的基础上,再加一个*表示一个指针去指向它。当然,既然有函数指针数组的指针,则必然还有函数指针数组的指针数组,只不过一般的编程用到的情况很少,如果读者有兴趣的话,可以去研究一下。