【C语言】const的用法

1、定义常变量

const int a = 10;    此处a为只读变量

int a = 10;              此处a可读可写

int b = a;               a做右值,可读

a = 100;                a做左值。左值:放在“=(赋值符号)”左边,写权限(可写)



2、数据类型对于const是透明的

也就是说const是无视数据类型来定义常变量的

const int a  等同于 int const a 



3、const直接修饰的内容不可做左值

①int const *cp1 = &a;                 const 修饰的是*cp1,

cp1 = &b;//ok                              所以给cp1赋值为&b是可行的,

*cp1 = 20;//error                          但是*cp1是只读的,所以赋值为20是错误的


② int *const cp2 = &a;                 此处const修饰的是cp2,则cp2为只读

cp2 = &b;//error                           给cp2赋值是错误的,

*cp2 = 20;//ok                               给*cp2赋值是可行的


③int const*const cp4 = &a;         此处有两个const,分别修饰了cp4和*cp4

cp4 = &b;//error                           所以此处给cp4赋值是错误的

*cp4 = 20;//error                           给*cp4赋值也是错误的



4、权限的传递:同等或缩小传递合法

可以将范围大的值传递给范围小或范围一样的值,但是不能将范围小的传递给范围大的


int a = 10;// w r                   a可读可写

int b = 20;// w r                   b可读可写

int const ca = 100;// r         ca只读,有写权限

int const cb = 200;// r         cb只读,有写权限


int *p = &a;                       p的权限为可读可写

p = &ca;//error                 


int const *cp1 = &a;         cp1可读可写,*cp1为只读,ca也是只读

cp1 = &ca;//ok                 


int *const cp2 = &a;       

cp2 = &ca;//error


int *const cp3 = &ca;//error











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值