下面定义一个简单的函数指针数组的指针:
char* (*(*pf)[3])(char* c);
pf是一个指针,这个指针指向一个有3个元素的数组,每个元素是一个参数为char* ,返回值为char *的指针。
示例:
#include <stdio.h>
#include <string.h>
char* func1(char* c)
{
printf("%s\n", c);
return c;
}
char* func2(char* c)
{
printf("%s\n", c);
return c;
}
char* func3(char* c)
{
printf("%s\n", c);
return c;
}
int main()
{
char* (*a[3])(char* c);
char* (*(*pf)[3])(char* c);
pf = &a;
a[0] = func1;
a[1] = func2;
a[2] = func3;
printf("%p\n", a[0]);
printf("%p\n", a[1]);
printf("%p\n", a[2]);
(*pf)[0]("func1"); // *pf[0][0]("func1");
(*pf)[1]("func2"); // *pf[0][1]("func2");
(*pf)[2]("func3"); // *pf[0][2]("func3");
return 0;
}