zoukankan      html  css  js  c++  java
  • C++把函数名作为参数传递给函数

    C++把函数A作为参数传递给另外函数B时,实际上是把函数A作为指针传递给另外的函数B,这就涉及到了函数指针。

    1.函数指针

    函数指针声明如下:

    return_type (*p_name)(arg_list);
    //表示返回值为return_type,参数列表为arg_list的函数指针p_name.

    例如:

    //定义一个函数
    int
    add(int a,int b) { return a+b; }
    int (*pfun)(int,int);//声明一个函数指针
    pfun = add;//使用函数指针指向一个函数,此处是函数名

    注意:函数指针的参数类型和返回类型必须与指向的函数参数类型返回类型一致

    2.使用函数指针代替函数使用

    int res = pfun(1,2);//使用函数指针调用函数add

    3.函数指针作为函数参数传递

    函数A作为参数传递给函数B时,函数B声明如下:

    int A(int a,int b);

    B(arg_list,int (*pA)(int, int));

    函数B调用如下:

    B(...,A);

    例子:

    int CmpAsc(int x, int y)
    {
        //如果x>y返回1,否则返回0;
        if(x>y)return 1;
        else return 0;
    }
    void sort(int a[], int n, int (*cmp)(int,int))//最后一个参数为函数指针类型参数
    {
        /*对数组a排序,排序原则由cmp指定,若cmp为真,表示两元素逆序*/
        for(int i=0;i<n-1;i++)
            for(int j=i+1;j<n;j++)
                if(cmp(a[i],a[j]))//调用传进来的函数指针
                    swap(a[i],a[j]);
    }
    
    int main(int argc, const char * argv[]) {
        // insert code here...
        
        int a[6] ={8,2,1,3,4,5};
        sort(a, 6, CmpAsc);//CmpAsc函数名作为参数传递给函数sort
        for(auto &e:a)
            cout<<e<<" ";
        return 0;
    }
  • 相关阅读:
    配置Python3 Pip3环境变量
    超级搜索术-读书笔记
    技术笔记-图片管理器
    Python不错的资料、网站
    输入法9键 VS 26键,哪个更适合?
    超级搜索术-思维导图
    Linux知识-Docker
    Python知识体系-基础知识03-函数/类/模块
    js基础(BOM对象)
    js基础(事件)
  • 原文地址:https://www.cnblogs.com/jainszhang/p/10704514.html
Copyright © 2011-2022 走看看