C++引用(References)

1.C++引用:

引用就是某一变量(目标)的一个别名, 相当于同一个人有了两个名字, 无论喊哪一个名字实际上都是指的同一个人。 同样, 在引用上, 对引用的操作与对变量直接操作的效果完全一样, 因此, 修改引用的值就是在修改变量的值

从内存角度来说, 引用与变量名指向的都是同一处内存, 对引用地址的操作与对变量名地址的操作都是对同一处内存进行操作。 引用本身占用存储单元, 但是你没有办法从C++层面去访问到引用所占用的空间。

2.引用的声明:

类型标识符 &引用名 = 初始值 ;

& 为引用说明符, 表示该数据类型为引用类型

PS:在声明一个引用时必须对引用进行初始化, 因为引用一经声明便无法修改int &rn ; //错, 未初始化

声明语句中的类型必须与初始值的变量类型一致int n = 10 ;double &rn = n ; //错, 声明的引用类型为double, 而初始值的类型为int

int main(){
    int x=10;
    int &a=x;   //建立x的引用
    cout<<&a<<" "<<a<<" "<<*(&a)<<endl; //0xbfc662b8 10 10

    int n=10;
    int *p=&n;  //指向n的指针:指针的值存的是n的地址
    cout<<p<<" "<<*p<<endl; //0xbfc662bc 10

    int *&fp=p; //建立指针的引用:&fp引用存的是指针变量p的地址,
    cout<<&fp<<" "<<fp<<" "<<*&fp<<endl;    //0xbfc662c0 0xbfc662bc 0xbfc662bc

    int &r=*new int;   //new开辟的无名内存建立引用
    r=100;  //等效与int r=100;
    cout<<&r<<" "<<r<<endl;
    //销毁r开辟的内存可以用delete &r;

}

3.引用使用的限制:

(1)不能建立数组的引用

(2)不能建立引用的引用

4.指针和引用的比较:

不同点:

1>. 指针可以被重新赋值, 而引用一经声明初始化便无法修改 ;

2>. 指针可以为空(NULL), 而引用不能 ;

3>. 指针在声明时可以不进行初始化, 而引用不能 ;

相同点:

都能直接对实体进行操作。

原文链接: https://www.cnblogs.com/mypsq/p/4858786.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/222737

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午11:50
下一篇 2023年2月13日 上午11:50

相关推荐