const的使用

const的使用

const:定义常变量,不能写,只读。

a、数据类型对于const而言是透明的。

例如:

              const int a = 100;

              int const a = 100;

const可以放在数据类型的两侧,两者是等价的。


b、const 用于封锁直接修饰的内容,并将该内容的属性变为只读

例如:

           int const*p1 = &a;      const 直接修饰 *p1 ,所以 *p1以后不能作为左值存在,即 p1之后不能再进行解引用了,即该语句导致:只能修改指针p1指向的地址,不能改变该地址保存的值

                              p1 = &a;   //正确  

                             *p1 = 200;   //错误

             1、 int const *const p3 = &a;

2、               p3 = &b;   //错误

3、              *p3 = 100;   //错误

语句 1 该语句导致不能对p3 进行任何修改,因p3 *p3 皆不能作为左值

 

c、权限可以同等或者缩小传递,绝对不能放大传递

例如:

int a = 10;  

int b = 20;    

const int ca = 10;   // const 修饰ca使其不能作为左值,即ca只具有读权限,不能对其进行写入

const int cb = 20;  /同上

 int *p = &a; 

  p= &ca;   //错误,ca只具有读权限,p具有读、写两权限,有可能通过对 解引用修改ca的值

  const int *cp1 = &a; //正确,const直接修饰*cp1,使其不能作为左值,所以cp不能解引用,但可以改变cp1所指向的地址

     

        cp1= &b;    //正确

        cp1= &ca;   //    

        const int *cp2 = &ca; //正确。该句导致cp2不能解引用,也就不用担心会通过解引用修改ca的值。

    

       int *const cp3 =&ca;   //错误。该句const直接修饰cp3cp3不能做左值,但可以对cp3解引用,可能修改ca的值,可ca不能写入,所以错误

 

    



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值