美文网首页
探索C语言中引用实质的实践

探索C语言中引用实质的实践

作者: abs_ | 来源:发表于2021-03-04 17:31 被阅读0次

    无意中看到一篇文章讲到对于引用的本质的讨论,其中提出了一个很有意思的结论,引用是一个常量指针,于是我进行了一番探索

        int a = 1;
        int &b = a;
        cout<<"========="<<endl;
    
        a = 3;
        cout<<"a的地址:"<<&a<<endl;
        cout<<"b:"<<b<<endl;
        cout<<"b的地址:"<<&b<<endl;
        cout<<"b的地址取值:"<<*&b<<endl;
    
        cout<<"========="<<endl;
    
        a = 4;
        cout<<"a的地址:"<<&a<<endl;
        cout<<"b:"<<b<<endl;
        cout<<"b的地址:"<<&b<<endl;
        cout<<"b的地址取值:"<<*&b<<endl;
    
        cout<<"========="<<endl;
    
        b= 5;
        cout<<"a的地址:"<<&a<<endl;
        cout<<"b:"<<b<<endl;
        cout<<"b的地址:"<<&b<<endl;
        cout<<"b的地址取值:"<<*&b<<endl;
     
    

    输出内容如下:

    =========
    a的地址:0x7ffeefbff214
    b:3
    b的地址:0x7ffeefbff214
    b的地址取值:3
    =========
    a的地址:0x7ffeefbff214
    b:4
    b的地址:0x7ffeefbff214
    b的地址取值:4
    =========
    a的地址:0x7ffeefbff214
    b:5
    b的地址:0x7ffeefbff214
    b的地址取值:5
    

    我个人理解:引用b是一个常量指针,b指向的地址是固定的,这个地址中存储的变量是随赋值的变化而变化,int &b = a 这个过程实际上是将变量a的地址赋值给一个常量指针b,b = 5 这个赋值的过程应该看成 *&b = 5,引用b的有效期就是a变量的有效期,大概就这样了,你明白了吗?

    相关文章

      网友评论

          本文标题:探索C语言中引用实质的实践

          本文链接:https://www.haomeiwen.com/subject/crmkqltx.html