以下为个人学习笔记整理。参考书籍《C++ Primer Plus》
# 函数指针
- 函数地址:「函数名」就是函数的地址
 - 声明函数指针:声明函数指针,必须能够体现函数的一些特性,例如参数和返回值。
 
double func(int); // 函数声明  | |
double (*p_f)(int); // 函数指针声明  | 
# 有意思的声明😁
两种声明方法最终的结果一致,即: p_f == (*pf)
void test_p_func(void p_f(int)) {  | |
p_f(1);  | |
} | |
void test_p_func(void (*p_f)(int)) {  | |
(*p_f)(1);  | |
} | 
# 好用的「auto」
auto 可以帮助我们自动推断出对象的类型。好处显而易见,可以减少对象定义的繁琐过程。缺点则是如果右值类型有误将不易察觉。
const double* (*pa[3])(const double *, int); // 声明一个函数指针数组,指向返回值为 const double* ,参数为 const double *, int 的函数  | |
auto pc = &pa //c++11 中 使用 auto 自动推断类型  | |
const double* (*(*pa[3]))(const double *, int) = &pa //c++98 中则需要这样定义  |