C++之指针和引用

本文探讨了C++中指针和引用的区别,包括指针可以为空而引用必须初始化,指针可重新赋值而引用不行,以及引用的安全性和在特定场景中的优势。同时解释了为何在C++中同时需要指针和引用,主要原因是兼容C语言。文章建议根据使用场景决定返回引用还是指针,并强调引用本质上通过指针解引用实现,也可支持多态。最后,指出引用和指针的共存为编程提供了更多选择。
摘要由CSDN通过智能技术生成

指针和引用的区别?

在C++的编码中我们发现很多地方都大量地使用引用,能用指针实现的功能改用引用几乎也能实现,甚至因为引用不需要拷贝的特性,使用起来比指针性能更高。
那么指针和引用又有什么区别呢?

更多关于指针的内容可以参考《C++之指针扫盲》

1、指针可以为空,引用必须初始化,引用不能为空

string& rs; //错误,引用必须初始化

2、指针可以被重新赋值,但是引用不行。也就是指针可以重新指向另外一个对象,而引用却不行,引用一直指向的都是最初的那个对象。

int main() {
    string s1("hello");
    string s2("world");
    string &rs = s1;
    string *ps = &s2;
    rs = *ps; // 这不是将引用rs指向ps,而是将s1的值修改为了s2的值
    ps = &s1;//将ps重新指向s1
    std::cout << "s1:" << s1 << endl;
    return 0;
}

3、指针可以有多级,而引用只能是一级
例如我们平时说的指向指针的指针,也就是二级指针,但是就没有所谓的指向引用的引用。

4、有了指针为什么还需要引用?
我们都知道指针在使用过程中需要特别地小心,很容易就出现空指针、野指针等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值