指针与引用

本文对比了指针和引用在C++中的不同之处,并详细解释了它们如何在生命周期内指向对象,以及指针和引用在定义时的不同特性。文中还讨论了常量引用和指向常量的指针的具体使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 不同点
  1. 指针本身是一个对象,允许对指针赋值和拷贝,在指针生命周期内可以先后指向不同的对象;
  2. 指针无须在定义时赋初值,指针如果没有初始化,会拥有一个不确定的值。
  • 相同点
    引用类型必须与其所引用对象的类型一致,但是有两个例外,一种是,在初始化常量引用时允许用任意表达式作为初始值,只要该表达式可以转化为引用的类型即可;允许为一个常量引用绑定非常量的对象,字面值,甚至是一个表达式;
    常量引用仅对引用可参与的操作做出了限定,对于引用的对象本身是不是一个常量未作限定,因为对象也可能是个非常量,所以允许通过其他途径改变它的值;

    int i = 33;
    int &r1 = i;//引用r1绑定对象i;
    const int &r2 = i;//让r2也绑定i,但是不允许通过r2修改i的值;
    r1 = 0;//r1不是常量,i的值可以修改为0;
    r2 = 0;//错误,r2是一个常量引用;

    和常量引用一样,指向常量的指针也没有规定其所指的对象必须是一个常量;
    所谓指向常量的指针仅仅要求不能通过该指针改变对象的值,而没有规定那个对象的值不能通过其他途径来改变。
    指针是对象而引用不是,因此允许把指针本身定为常量;
    常量指针必须初始化,而且一旦初始化完成,则它的值(也就是存放在指针中的那个地址)就不能再改变了。把*放在const关键字前面说明指针是常量,不变的是指针本身的值,而不是指向的那个值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值