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