底层const和顶层const

const限定符:
        定义的一般形式:
                const 数据类型 常量名 = 常量值;
                数据类型 const 常量名 = 常量值;
        举例:
                const float PI = 3.14159f;
        注意事项:
                1. 常变量在定义时必须初始化;
                2. 常变量初始化之后,不允许再被赋值;


const限定符与指针
        const int * p;         //const在*左边,表示*p为常量,不可更改(经由*p不能更改指针所指向的内容)
                     //但指针p还是变量,想怎么变都可以。这就是所谓的底层const
        举例:
        int b = 22;
        const int * p;
        p = &b;
        //* p = 200;        //Error *p是常量,不能再对常量赋值

        
        int * const p = &b;//在声明的同时必须初始化,const在*的右边,表示p为常量,p所指向的地址
                          //是不可更改的,所以当把b的地址赋值给它时,会报错。这也就是所谓的顶层const
        举例:
        int b = 33;
        int c = 22;
        int * const p = &b;//在声明的同时必须初始化,const在*的右边,表示p为常量,p所指向的地址
                          //是不可更改的,所以当把b的地址赋值给它时,会报错
        //p = &c;        //Error p为常量


        const int *const p;//这个就相当于以上两种情况的混合体,p是常量,
                          //所以不能把test2的地址赋给p;同时*p也是常量,所以*p的内容不可更改;
        举例:
        int test1 = 10;
        int test2 = 20;
        const int * const p = &test1;
        p = &test2;        //Error,p是常量,所以不能把test2的地址赋给p;
        *p = 30;        //Error,*p是常量,所以*p的内容不可更改;
                         
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值