函数本身就是一个地址,也算指针,函数指针和函数很像。
函数和函数指针
- C/C++的思路很简单,函数是指针,函数指针也是指针,二者是可以看成一样的。
- func()和(*func)()一样。
- “func;”并不会调用func函数, func()才会调用。
- C++类静态函数和C语言函数类似,假设类名A,&A::static_func代码函数指针。类成员函数需要指明类对象和类函数指针。
- 如void func(A *a, void (A::*show)()) { (a->*show)(); }
- PHP 提供变量函数,和函数指针类似。
支持函数指针的语言
- Fortran/COBOL/ PL/I /Pascal/C/C++/D/C#
委托
不显式支持指针的编程语言,有的利用委托来模拟函数指针。
类型优化
- 函数指针声明语句比较长,利用typedef定义或重命名函数指针,可以简化代码。