以下为个人学习笔记整理。参考书籍《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 中则需要这样定义 |