typedefint(*Funptr)(int a, int b); intFun1(int a, int b) { return a + b; } voidFun2(Funptr p) { printf("%d\n", p(1, 2)); } intmain() { Funptr p = &Fun1; Fun2(p); system("pause"); return0; }
这样的效果和定义函数类型是一样的。
当然我们还可以直接定义一个指向函数的指针变量,来实现同样的效果,如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
intFun1(int a, int b) { return a + b; } voidFun2(Funptr p) { printf("%d\n", p(1, 2)); } intmain() { int(*p)(int a, int b) = &Fun1; Fun2(p); system("pause"); return0; }
我们还可以这么做,一样能达到相同的效果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
intFun1(int a, int b) { return a + b; } voidFun2(int (*ptr)(int a,int b))//直接定义函数指针的形参 { printf("%d\n", ptr(1, 2)); } intmain() { Fun2(&Fun1);//直接传递函数地址 system("pause"); return0; }