顶层const和底层const的理解

文章详细阐述了C++中指针的顶层const和底层const概念。顶层const表示指针本身不可变,但可改变其指向的内容;底层const则表示指针指向的内容不可变,而指针可以改变。同时,文中通过示例解释了如何识别和使用这两种const类型,并举例说明了当两个const都存在时的情况。

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

顶层跟底层是针对指针的 很简单 针对指针可以修改及不能修改;

指针可以改变 指针指向的内容不可以变为底层const

指针不可以改变 指针指向的内容可以改变为顶层const

怎么识别顶层const 底层const:

const优先修饰左边的值 如果左边没有值 就修饰右边的值

例如 const int* p; 左边没有值所以 const 修饰int, int const * p; const 左边有值 所以const 也是修饰int 所以这两个表达式的内容都是 指针指向的内容不可以改变 指针可以改变 所以为顶层const ;

    int d = 13;
    int d1 = 14;
    const int* p1 = &d;
    p1=&d1;//正确,可以修改p2指针的只想内容
    *p1=d1;//报错 *p1表达式必须是可以修改的左值

例如 int * const p2;const 左边的值为* ,所以该表达式为底层const 指针p1的值是不能改变的;但是指针指向的内容可以修改 可以可以使用*p1 解引用修改p1指针指向的内容

    int* const p2=&d;
    *p2 = d1;//正确,可以修改
    p2 = &d1;//错误, p2表达式必须是可以修改的左值

例如 int const * const p3; 该表达式const ,第一个const 是代表的底层const 第二个const 代表的底层const 该表达式既有底层const 也有顶层const,所以指针及指针指向的内容都不允许改变

    int const* const p3=&d;
    *p3 = d1;//错误, *p3表达式必须是可以修改的左值
    p3 = &d1;//错误, p3表达式必须是可以修改的左值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值