顶层const与底层const

本文详细解析了C++中顶层指针、底层指针及顶底混合指针的概念与使用方式,介绍了不同类型的指针在实际编程中的行为差异。

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

代码如下:

#include "stdafx.h"
#include <iostream>

using namespace std;

int main(){
     int a = 1,b=10;
     /*
     *1.顶层指针
     *即指针本身是一个常量,
     *不能重定向指针指向,但可以通过指针修改指针指向的变量值
     */
     int *const p = &a;
    //p = &b; 错误,不能重定向p指针指向
     *p = 4;//正确,可以修改指向的变量值
     a = 2; //正确,可以修改a值

     /*
     *2.底层指针
     *即指针指向对象是一个常量,
     *可以重定向指针指向,但不可以通过指针修改指针指向的变量值
     */
     const int *p1 = &a; //与int const *p1 = &a声明等价
     // *p1 = 5;错误,不能通过p1修改所指对象的值,因为*p1为常量
     a = 5; //正确,可以修改a值
     p1 = &b; //正确,可以指针重定向

     /*
     *3.顶底层混合指针
     *即指针本身是一个常量,而且指向对象也为常量
     *不但不能重定向指针指向,并且不允许通过指针修改指针指向的变量值
     */
     const int *const p3 = &a;
     //重定向指针指向和改变指针所指对象的值都不行
     // p3 = &b;
     //*p3 = 6;
     a = 3; //仅能修改a值
    system("pause");
    return 0;
}

小结:
1.const出现在*后,就是顶层,顶层const指针本身为常量,不能重定向,但能通过*p修改值。
2.const出现在*前,就是底层,底层const指针所指对象为常量,可以指针重定向,但不能通过*p修改值。
3.前后都有就是顶底混合,不能重定向也不能修改值,但直接修改所指对象的值是都可以的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值