C++中const修饰指针探讨

在C++里,const修饰指针有以下三种情况

(1)const  int  *p;   const在类型前,称指向常量的指针,可以这样理解它的功能,因为const在int前,所以p指向的这个int变量对于*p来说是const的,即不能通过*p改变这个变量的值,但是变量本身可以随便改变自己的值。另外也可以改变p的指向。

例:

int x=2;

int y=3;

const int *p=&x;

*p=4;   //错误,不能通过*p改变变量的值

x=4;    //可以,x不是一个常量,可以改变自己的值

*p=&y;   //可以,指针p本身不是一个常量,可以改变p的指向。

(2)int * const q;  const在指针q的前面,叫常量指针,也就是说指针q本身是个常量,不能改变q的指向。但是可以通过*q改变所指向变量的值。

例:

int x=2;

int y=3;

int * const q=&x;     //注:因为指针q是常量,在声明时就应该初始化。

*q=4;   //可以

x=4;    //可以,x不是一个常量,可以改变自己的值

*q=&y;   //错误,指针q本身是一个常量,不能改变它的指向。

(3)const int * const pq;  这是前两种的结合,叫指向常量的常量指针。功能也是前两者的结合,即不能改变pq的指向,也不能通过*pq改变所以变量的值。

例:

int x=2;

int y=3;

const int * const pq=&x;

*pq=4;   //不可以,不能通过*pq改变所指变量的指。

x=4;    //可以,x不是一个常量,可以改变自己的值

*pq=&y;   //错误,指针pq本身是一个常量,不能改变它的指向。

总结:从上面可以看出,不论那种情况,变量本身都是可以改变自己的值的,除非变量本身就是声明成常量(const int x=2;)。区别三种情况关键就是看const在类型前还是在指针前,在类型前,不能通过*p改变变量的值,在指针前不能改变指针的指向,且在声明时就要初始化。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值