#include <stdio.h>
#include <string.h>
char * fun1(char * p)
{
printf("fun1:%s\n",p);
return p;
}
char * fun2(char * p)
{
printf("fun2:%s\n",p);
return p;
}
char * fun3(char * p)
{
printf("fun3:%s\n",p);
return p;
}
typedef char * (PF)(char *a);
int main()
{
char * (*pf[3])(char * p);
//char * (*pt)(char *a);
PF* pt;
void ** fptr ;
//PF** fptr ;
pt = &fun1;
*pt("fun0"); //fun1:fun0
pf[0] = fun1; //可以直接用函数名
pf[1] = &fun2; //可以用函数名加上取地址符
pf[2] = &fun3;
//fptr = &pf[0];
fptr[0]=fun1;
fptr[1]=fun2;
fptr[2]=fun3;
*((PF*)fptr[0])("funaaaaaaaaa1"); //fun1:funaaaaaaaaa1
*((PF*)fptr[1])("funaaaaaaaaa1"); //fun2:funaaaaaaaaa1
*((PF*)fptr[2])("funaaaaaaaaa1"); //fun3:funaaaaaaaaa1
//*(fptr[1])("funaaaaaaaaa1");
//*(fptr[2])("funaaaaaaaaa1");
*pf[0]("fun1"); //fun1:fun1
pf[1]("fun2"); //fun2:fun2
pf[2]("fun3"); //fun3:fun3
return 0;
}