C/C++【const int和int const】的区别

修饰变量

//没有区别
const int p = 12; //p不能被修改
p = 42; //编译出错
int const q = 42; //q不能被修改
q = 12; //编译出错

修饰指针

const int a = 12;
const int b = 42;
const int c = 54;

const int *r = &a; //*r不能被修改
*r= b; //编译出错
int* const p = &b; //p不能被修改
p = &c; //编译出错
int const *q = &c; //*q不能被修改
*q = a; //编译出错

理解记忆

对于const我们可以使用“去除类型,就近原则”来理解,即const修饰的是去除类型后最靠近它的右边的那个变量(包含解引用符号*),即:
1、const int p和int const q去除类型后,都是 const var,所以这两者是等效的
2、const int *p和int const *q去除类型后,都是const *var,所以这两者也是等效的,即都是修饰的指针解引用,所以这两种情况是能修改指针变量的值,不能修改解引用本身,即不能对*p和*q进行赋值
3、int* const p,这个const跟变量中间没有类型,所以比较好理解,它修饰的就是p指针变量本身,所以这种情况是不能修改指针变量的值,但能对解引用进行赋值,即*p = var是合法的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值