c基础————const的用法

一、基础用法:

1、const就是定义一个常变量     const int a = 10;

2、数据类型对于const是透明的(const int 等同于int const);

3、const直接修的内容不能做左值;(左值:放在=符号左边,用写权限;右值:只可读不可写)

4、const在权限传递时,只能同等或者缩小传递,不能放大传递

二、实际应用:

int main()
{
    int a = 10;//可读可写
    int b = a;//a做右值
    a = 100;//a做左值,左值:放在=符号左边,用写权限
    //1、const定义常变量
    const int ca = 100;//只读变量,不能做左值
    //3、const直接修饰的内容不能做左值
    //ca = 200;//error
    //ca = 100;//error
    //const int cb;//error
    int const cc = 100;//cc和上面的ca没有区别//2、数据类型对于const 是透明的 const int 等同于int const
    b = cc;
    //cc = 10;//error
    const int *cp1 = &a;//const直接修饰的是*cp1,所以*cp1不可做左值(及cp1不能解引用),cp1可以做左值。
    cp1 = &b;//ok
    //*cp1 = 20;//error
    int const *cp2 = &a;//cp2等同cp1
    cp2 = &b;
    //*cp2 = 20;
    int *const cp3 = &a;//const直接修饰的是cp3
    //cp3 = &b;//error
    *cp3 = 100;//ok
    int const *const cp4 = &a;
    //cp4 = &b;//error
    //*cp4 = 20;//error

    return 0;

}

//4、const权限的传递:同等或者缩小传递合法,放大传递非法(可读可写的值,既可以让它做左值也可以让它做右值;只可读不可写的值只能做右值)
int main()
{
    int a  =10;//rw
    int b = 20;//rw
    int const ca = 100;//r
    int const cb = 200;//r
    int *p = &a;
    //p = &ca;//error,*p = 100;p是一个指针变量(可读可写),ca是被const定义的常变量(可读不可写),如果将ca赋值给p,则ca就成了一个可以做左值的变量,显然ca是不能做左值的。
    int const *cp1 = &a;
    cp1 = &ca;//ok
    int *const cp2 = &a;//const直接修饰的是cp2
    //cp2 = &ca;//error,cp2不可做左值
    //int *const cp3 = &ca;//error,const直接修饰的是cp3,cp3可以解引用,则ca间接做了左值

    return 0;
}

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值