Const(定义常变量)的四个重要性质

1.将变量变成只读

定义一个变量a,并赋初值10,变量a既可以被重新赋值,又可以被读取:

int a= 10;
a = 20;
int b = a;

这时变量a被称为左值,它具有可以被赋值和读取两种属性

倘若定义常变量a,试着重新赋值和读取:

可以看到编译器报错,const将变量a变成了右值,即只可被读取,不能写入(重新赋值)


2. 数据类型对于const而言是透明的

观察1,const写在int后面,那么数据类型是否会影响const的作用?:

显而易见,数据类型不会影响const


3. const修饰它的直接右边,不能做左值

int a = 10;
int b = 20;
const int * p= &a;
p = &b;        //指针变量p做左值,被重新赋值为b的地址,说明const并没有对指针p作用
*p = 30;       //由于数据类型对于const是透明的,所以const作用于*p,可以看到*p不能做左值,因为它不能被重新赋值
	
int * pp = &a;
*pp = *p;       //可以看到被const修饰的变量,不能再做左值,只能用来被读取


4.权限可以同等或者缩小传递,但不能放大传递

const int b = 20;
const int *p = &b;         //同等传递:此时b不能做左值,*p也不能做左值,倘若int * const p,则是错误的,因为*p是可以做左值的,这样的话b的值可以被修改,因此不合法
const int * const p = &b;  //缩小传递:p和*p都不能做左值,这样就保证了b的值不会被修改
int * const p = &b;        //放大传递:这种传递是不合法的,因为const修饰指针变量p,但是*p可以做左值,可以修改b的值

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值