zoukankan      html  css  js  c++  java
  • c++ 引用和指针的区别

    今天看钱能的C++,书中具体说明了区别和引用的本质

    引用与指针的差别: 指针可以操作两个实体,一个是指针值,一个是指向的值,因此指针可以改变关联的实体,即指向的实体.而引用只能操纵一个实体.

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int a = 10,b = 20;
        int &ra = a;    //引用a
        int *pa = &a;   //指针pa
    
        cout<<"&ra: "<<&ra<<"  ra: "<<ra<<endl;
        cout<<" &a: "<<&a<<"   a: "<<a<<endl;
        cout<<"&pa: "<<pa<<" *pa: "<<*pa<<endl;
        ra =15;
        pa =&b;
        //ra =&b; //报错
        cout<<"&ra: "<<&ra<<"  ra: "<<ra<<endl;
        cout<<" &a: "<<&a<<"   a: "<<a<<endl;
        cout<<"&pa: "<<pa<<" *pa: "<<*pa<<endl;
    }
    
    //最后结果
    &ra: 0x6afef4  ra: 10
     &a: 0x6afef4   a: 10
    &pa: 0x6afef4 *pa: 10
    &ra: 0x6afef4  ra: 15
     &a: 0x6afef4   a: 15
    &pa: 0x6afef0 *pa: 20

    指针既可以改变所指向的实体,也可以改变所指向的实体的值。而引用只可以改变指向的实体的值。

    这是因为实体在编译的时候将这个特殊的指针ra转换为*ra操作。(等价于ra就等价于*pa) 这就是为什么引用不能操作自身的地址,每次访问ra,实际上是在访问所指向的a实体。

    与指针比较,引用隐去了地址操作,引用封锁了这种地址的可修改性,使得间接访问操作相对来说更安全了,也就隔离了万恶之源.

  • 相关阅读:
    kvm克隆虚拟机
    vSAN添加license
    KVM虚拟机快照
    第二次作业及总结——数据类型和运算符
    第二次作业心得
    做完c语言作业的心得
    介绍自己
    awk数组 Jazz
    Java入门第一阶段总结
    区间dp入门+例题
  • 原文地址:https://www.cnblogs.com/Triomphe/p/9383377.html
Copyright © 2011-2022 走看看