const解析

在程序中const出现在各种场合,const的不同位置往往造成初学者的疑惑,如const int val; int const val; int cont *p; const int *p; int *const p; const int *const p;等等。那么这些用法到底有什么区别呢?

1.从const本身展开

const意思为限定,也就是一旦赋值不能修改。

关键在于(重点):const到底限制的是哪个方面。

2、各种const位置的含义区别

(1)const int val; 与 int const val;

这两种含义是一致的。为什么呢?const int val 表明 const限定的是(int val),这跟限定val(其类型为int)的含义从理解上来说也是一样的。

这两者都表明 val定义时就需要初始化,且后来不能更改这个值。

(2)const int *p 与int const *p

这两者也相同,解释同上,都表明p指针指向的对象是被限定的(p指针自认为指向的对象是被限定的)。这句话的意思是说,p指针既可以指向cosnt对象,也可以指向非const对象。但是,p指针不管对象是否为const它都认为是const对象,也就是说指向好后,不能用对p指针解引用的方式来修改对象的值。

(3)int *const p

这里,const限定指针p,即需要初始化p指向的对象。一旦初始化后,即不可再修改p(让p指向其他int对象)。但是,由于前面无const,因此可以通过p对指向的对象赋值。如:

int a, b;

int *const p = &a;

p = &b; (error)

*p = 10; (OK)

(4)const int *const p 与 int const *const p

这两种类型也是一样的,都进行了双重限定,a、限定p b、限定p所指向的对象。由于这里限定了p,所以定义时需要初始化,并且不能再变更。可以指向const和非const对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值