【速记】常量指针与指针常量

本文详细解析了C++中const关键字与指针的结合使用,包括const int *、int *const和const int *const三种情况。分别阐述了它们在指针不变、指针指向的值不变以及两者都不可变时的语义,通过实例展示了各种情况下指针操作的限制,帮助读者深入理解const指针的用法。
摘要由CSDN通过智能技术生成

注意

 当const遇上指针,其实很好理解,不要被中文的翻译给混淆了,还是看英文原话比较好理解。

1、指针指向某类型值,不希望该指针有机会去修改该值时,使用const int *(同 int const *),指向的值可以是常量,也可以是变量。【可以变更指向的对象】

2、指针指向某类型值,不希望中途更换该指针所指向的对象,使用int * const,此时指向的是个变量(可以修改该变量的值),注意,不能指向常量噢【可以修改变量的值】

把1、2两条合并起来,意思是:指针指向某类型的值,不希望该指针有机会去修改该值,也不希望该指针中途更换所指向的对象,使用const int * const(同 int const * const)。可以指向常量,也可以指向变量,但是不能变更指向的对象,也不能修改所指向的对象的值。

    const int coco = 1234;
    int const other = 888; // 同 const int
    int normal = 33;
    int normal2 = 44;
    
    const int * pt = &coco;
    pt = &other;
    pt = &normal;
    //*pt = -1; // sorry, pt是个指向变量(可以是常量)的指针,可以改变指向的对象,但是不能改变所指向的对象的值

    int const * pt2 = &coco; // 同 const int *
    pt2 = &normal;
    pt2 = &other;
    //*pt2 = 825232603; // sorry, pt2跟pt是一个道理

    int* const pt3 = &normal;
    *pt3 = 33;
    //pt3 = &normal2; // sorry, pt3此时是个始终指向某个int变量的指针,不可切换指向对象
    //pt3 = &other; // sorry, pt3此时是个始终指向某个int变量的指针,不可切换指向对象

    const int* const pt4 = &coco;
    //pt4 = &normal2; // sorry, 第二个const发挥作用, 不可切换指向对象
    //pt4 = &coco; // sorry, 第二个const发挥作用, 不可切换指向对象
    //*pt4 = 33; // sorry, 第一个const发挥作用, 不能修改值

    int const* const pt5 = &normal; // 同 const int * const
    //pt5 = &normal; // sorry
    //pt5 = &coco; // sorry
    //*pt5 = 33; // sorry

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值