C++指针函数

指针函数

指针函数有些像C#中的委托delegate(不知道理解的对不对)。

定义函数指针

int *compare(int, int );

一般简写为

typedef int (*compare)(int,int);

这样就定义了一个名为compare的函数指针。compare指针类型为:指向返回int类型并带有两个int参数的函数的指针。

函数指针只能通过同类型函数、函数指针 、常量0初始化。函数指针初始化为0,和指针初始化为0是一样的 ,都表示不指向任何对象。
int intCompare(int x,int y){
    if (x == y)
        return 0;
    else if (x > y)
        return 1;
    else
        return -1;
}
int main(int argc, char const *argv[])
{
    typedef int (*compare)(int x, int y);
    compare com = intCompare;
    int reslut1 = (*com)(1, 2); // 显示调用
    std::cout<< reslut1<<endl;
    //console : -1
    int reslut2 = com(2, 2); // 隐式调用
    std::cout << reslut2 << endl;
    // console : 0
    int reslut3 =intCompare(2,1); //直接调用函数
     // console : 1
}

函数指针做形参

以函数指针做形参的函数的定义有两种

void defPointFun(int fun(int ,int ))
{
    //todo somethings
}

另一种

void defPointFun(int (*fun)(int ,int ))
{
  //todo somethings
}

还没有想到适用的场景,可能随着学习的深入和遇到的业务场景的增加,会有实际使用的场景

函数返回函数指针

函数指针也可以做函数的返回值。《C++ Primer》 中讲“正确写出这种返回类型相当不容易”。故此,暂时先不去研究它了。
posted @ 2023-06-26 22:46  胖子说嘛  阅读(32)  评论(0)    收藏  举报