// myVoid 等价于 (*pf)
void myVoid(char *);
void (*pf)(char *);
// 声明函数的形参为另一个函数
void show(void (*fp)(char *),char *c);
//创建函数指针数组
typedef void(*ppf)(char *);
//数组函数元素
void myVoid2(char *);
void myVoid3(char *);
ppf bb;
int main(int argc, const char * argv[]) {
//因为 myVoid等价于 pf,这里赋值后,下面函数的实参传入 pf函数就等于 把 myVoid函数传入
pf = myVoid;
char myChar[] = "my char";
show(pf, myChar);
show(myVoid, myChar);
//函数指针数组 初始化
ppf bb[3] = {myVoid,myVoid2,myVoid3};
for (int i = 0; i< 3; i++) {
char a[10];
sprintf(a,"%d",i);
show(bb[i], a);
}
void (*addPtr)(char *) = myVoid;
addPtr("dsfsadf");
return 0;
}
void myVoid(char *a)
{
puts(a);
}
void myVoid2(char *b)
{
puts(b);
}
void myVoid3(char *c)
{
puts(c);
}
void show(void (*fp)(char *),char *c)
{
char *str = c;
//调用 myVoid(char *a)函数
//(*fp)(str) 等价于 fp(str)
// (*fp)(str);
fp(str);
}