• C++之引用


    引用即别名。引用不是对象,只是为已经存在的对象所起的另一个名字。

    格式:数据类型 &别名 = 原名

    注意点:

    1)引用必须初始化,初始化后不可改变。

    2)不能定义引用的引用(因为引用不是对象)。

    3)引用可作为函数参数(值传递,地址传递,引用传递)

    4)引用作为函数返回值,不可以返回局部变量的引用。
    例子:

    int& func()
    {
        int num = 10; //局部变量在栈区
        return num;
    }
    
    int main()
    {
        int& ref = func();
        cout << "ref = " << ref << endl;
        //cout << "ref = " << ref << endl;
        return 0;
    }
    

    codeblocks无返回结果,会出现错误信息。

    5)引用是函数返回值,函数调用可作为左值
    例子:

    int& func()
    {
        static int num = 10;   //静态变量在全局区
        return num;
    }
    
    int main()
    {
        int& ref = func();
        cout << "ref = " << ref << endl;
        func() = 20;             //相当于做了num=20的操作
        cout << "ref = " << ref << endl;  //ref又是num的别名,所以也是20
        return 0;
    }
    

    输出结果:
    ref = 10
    ref = 20

    6)引用本质:引用在C++内部实现是一个指针常量
    例子:

    void func(int& ref)
    {
        ref = 100;  //ref是引用,转换为*ref = 100
    }
    
    int main()
    {
        int a = 10;
        
        //自动转换为 int* const ref = &a; 指针常量是指针指向不可改,也说明为什么引用不可更改
        int& ref = a;
        ref = 20;    //内部发现ref是引用,自动帮我们转换为:*ref = 20;
        
        cout << "a: " << a << endl;
        cout << "ref: " << ref<< endl;
        
        func(a);
        return 0;
    }
    
  • 相关阅读:
    一张图帮你分清scroll、offset、client
    js两种显示日期的方法
    理解js的全局变量和局部变量
    中文输入+英文标点+快速编辑Markdown文本+Sublime+Snippet
    Markdown 使用方法
    get和post的区别
    js对象属性方法大总结(收集)
    bfc (收集的)
    客户端网页编程知识总结
    html学习总结
  • 原文地址:https://www.cnblogs.com/echobiscuit/p/12912255.html
Copyright © 2020-2023  润新知