C++ Primer Plus读书笔记—— 7.10 函数指针

语法

  • 获取函数的地址
    函数名即为函数的地址,在传参的时候注意不要加上括号和参数

  • 声明函数指针
    和声明函数原型,很像。

int f(int,double); 
int (*pf)(int,double); // 注意要 (*pf),运算符的优先级
  • 使用指针来调用函数
int (*p)(int);
int x1 = p(1);
int x2 = (*p)(1); //更好
  • 使用typedef来简化
typedef int* (*P)(int,int);
int* f(int a,int b){
    
    
}
P p = f;

书上的例子

const double* f1(const double *,int );
auto p1 = f1;

什么意思呢,一个接受double类型常指针和一个int参数返回double型常指针的函数,然后将f1(函数地址,这是个常量)赋值给函数指针变量p1。(auto关键字自动推断类型,注意不是动态类型)

如何声明一个 函数指针的数组呢?注意3的位置。

const double* (*pa[3])(const double *,int);

再来一个更复杂一点的例子:

const double* (*(*pd)[3])(const double *,int);

含义是pd是一个指向包含3个元素的数组的指针,数组里面放的是3个函数指针,而函数的返回类型的double型常指针

猜你喜欢

转载自blog.csdn.net/qq_44846324/article/details/108087812
今日推荐