• C++ 函数


    函数三要素:名称、参数、返回值

    定义

    返回类型、函数名、形参列表内、函数体

    类型

    C++中,所有的函数和变量都必须有类型

    C

    int f();//返回值为int,接受任意参数的函数

    int f(void);//返回值为int的无参函数

    C++

    int f();和int f(void);//具有相同的意义,都表示返回值为int的无参函数

    默认参数和占位参数

    通常情况下,函数在调用时,形参从实参那里取得值。对于多次调用同一函数同一实参时,C++给出了更简单的处理方法。给形参以默认值,这样就不用从实参那里取值了。

    默认参数

    单个默认参数

    若填写参数,使用填写的,若不填写,则使用默认的

    void Myprint(int x=3)

    {

    cout<<"x:"<

    }

    多个默认参数

    如果默认参数出现,那么右边的都必须有默认参数

    #include

    using namespace std;

    float volume(float length,float weight=4,float high=5)

    {

    return length*weight*high;

    }

    int main()

    {

    float v=volume(10); //200

    float v1=volume(10,20); //1000

    float v2=volume(10,20,30); //6000

    cout<

    cout<

    cout<

    return 0;

    }

    规则

    1.只有参数列表后面部分的参数才可以提供默认参数值

    2.一旦在一个函数调用中开始使用默认参数值,那么这个参数后的所有参数都必须使用默认参数值

    占位参数

    主函数(main函数)

    返回值

    返回类型必须为int,即整数类型。int类型是一种内置类型,即语言自身定义的类型。

    main的返回值用来指示状态,返回值0表示成功,非0的返回值的含义由系统定义,通常用来指出错误类型。

    inline内联函数

    基本概念

    C++提供了inline关键字,实现了真正的内嵌

    特点

    1.内联函数声明时inline关键字必须和函数定义结合在一起,否则编译器会直接忽略内联请求

    2.C++编译器直接将函数体插入在函数调用的地方

    3.内联函数没有普通函数调用时的额外开销(压栈、跳转、返回)

    4.内联函数是一种特殊的函数,具有普通函数的特征(参数检查,返回类型……)

    5.内联函数由编译器处理,直接将编译后的函数体插入调用的地方,

    宏代码片段由预处理器处理,进行简单的文本替换,没有任何编译过程

    6.C++内联编译的限制:

    不能存在任何形式的循环语句

    不能存在过多的条件判断语句

    函数体不能过于庞大

    不能对函数进行取址操作

    函数内联声明必须在调用语句之前

    7.编译器对于内联函数的限制并不是绝对的,内联函数相对于普通函数的优势只是省去了函数调用时压栈,跳转和返回的开销。因此,当函数体的执行远大于压栈,跳转和返回所用的开销时,那么内联将无意义

    内联函数 vs 宏函数

    总结

    优点

    避免调用时的额外开销(入栈和出栈操作)

    代价

    由于内联函数的函数体在代码段中会出现多个“副本”,因此会增加代码段的空间

    本质

    以牺牲代码段空间为代价,提高程序的运行时间的效率

    适用场景

    函数体很“小”,且被“频繁”调用

  • 相关阅读:
    metaRTC+mbedtls实现android平台上更高效的webrtc
    性能测试学习——项目环境搭建和Jmete学习二
    每日学习笔记:C++ STL算法之容器元素排序
    学信息系统项目管理师第4版系列27_项目集管理和项目组合管理
    iOS开发:浅尝辄止Runloop
    1513_人月神话阅读笔记_再论没有银弹
    [CISCN 2019 初赛]Love Math
    谷粒商城10——搜索、商品详情、异步编排
    回文自动机(PAM)
    PowerBI真经连续剧
  • 原文地址:https://blog.csdn.net/weixin_65951505/article/details/133942060