zoukankan      html  css  js  c++  java
  • C++(十七) — 宏代码、内联函数

     1、C++ 表达式返回值

      返回引用:当函数返回引用类型时,没有复制返回值。相反,返回的是对象本身。(与之对应的C语言中,返回的是变量的值)

       C++中,表达式返回的是变量本身(也就是变量对应的地址)。编译器帮我们完成  取地址的工作。

     2、引用与指针

       引用是别名,必须在声明的时候初始化。

      引用:在函数调用时,是变量的别名,不可以单独存在;

      指针:本身有自己的地址,可以单独存在。

    3、内联函数

       在C++中,使用 常量定义 const 代替 # define 定义;使用内联函数定义 代替 宏定义,区别是:

    • 内联函数:编译器处理,直接将编译后的函数体插入调用的地方;
    • 宏代码片段:有预处理器处理,进行简单的文本替换,没有任何编译过程;

      内联函数,一些常用的短小的函数适合。减少函数调用时,系统的额外开销(时间和空间),因为:系统在编译程序时,已经把内联函数的函数体代码插入到相应的函数调用位置,成为主调函数内的一段代码,可以直接执行,不必要再转换流程控制权。但使得主调函数代码变长(就是替代,直接将函数体插入函数调用位置)。相对普通函数优势:省去函数调用时的压栈、跳转、返回开销。

      注意:

    • 内联函数体不能包含循环语句,switch语句;
    • 要先定义、后调用,和函数体的实现写在一起,不能先声明内联函数原型,再调用、定义;
    • C++编译器内部有优化,不一定准许函数的内联请求,那就变为一个普通函数;
    inline int max(int x, int y, int z)
    {
        return ((x >= y) ? (x >= z ? x : z) : (y >= z ? y : z));
    }
    
    void main()
    {
        int a, b, c;
        cout << "enter three integers: ";
        cin >> a >> b >> c;
        cout << "maximum is  " << max(a, b, c) << endl;
        
        system("pause");
    }
  • 相关阅读:
    【BZOJ1901】Dynamic Rankings(树套树,树状数组,主席树)
    【Vijos1222】等值拉面(DP)
    【Vijos1534】高性能计算机(DP)
    【POJ3321】Apple Tree(DFS序,树状数组)
    主外键约束
    java访问权限
    java2实用教程102小程序(分数计算和流水线计算
    java对象初级知识
    java第一天的疑问
    时间
  • 原文地址:https://www.cnblogs.com/eilearn/p/10133857.html
Copyright © 2011-2022 走看看