zoukankan      html  css  js  c++  java
  • 常量引用const reference

    引用可以被const修饰,无法通过引用修改数据,称为常引用

    int & const ref1 = age;    //不能修改指向,可以赋值ref1间接修改age的值
    ref1 =30;
    
    int const &ref1 = age;    //什么都不能
    

    const引用特点

    • 可以指向临时数据(常量、表达式、函数返回值等)
    const int &ref = 30;
    
    • const让函数参数接收各种类型的参数
    int sum(int &v1, int &v2) {
        return v1 + v2;
    }
    
    int main() {
        
        // 非const实参
        int a = 10;
        int b = 20;
        sum(a, b);
    
        // const实参
        const int c = 10;
        const int d = 20;
        sum(c, d);
    
        sum(10 ,20);    //这里会报错,函数声明必须加const
    /*
    int sum(const int &v1,const int &v2)   
    */
    }
    

    绕来绕去的语法直接看汇编

    int age = 10;
    const long &rAge = age;    //写int写long结果不一样
    age = 30;
    
    cout << "age is" << age << endl;
    cout << "rAge is" << rAge << endl;
    

    不同语言的汇编

    • java、c++、oc、swift-->汇编机器码(不一样),但最终都在同一个CPU的指令集架构中

    数组名arr是数组的地址,是指向首元素的一个指针

    int arr[] = {1, 2, 3}; 
    *arr    //取出数组的值1
    int (&ref)[3] = arr;    //引用数组
    ref[0] = 10;
    int * const &ref = arr;    //地址值不可变,为常量,引用加const
    
  • 相关阅读:
    异常与中断
    ARM linux开发之Ubuntu上串口终端
    linux基础之Makefile基础
    STM32F104ZET6之ucosⅢ下adc
    STM32F104ZET6之ucosⅢ临界区保护与互斥锁的区别
    STM32F104ZET6之ucosⅢ临界区保护
    STM32F104ZET6之ucosⅢ常用函数
    QT5 mouseMoveEvent事件
    QT5 sqlite3的使用
    QT5 拖拽事件
  • 原文地址:https://www.cnblogs.com/sec875/p/12261694.html
Copyright © 2011-2022 走看看