C++中const与指针

前言:指针这方面的学习有所欠缺,自己就花了一点时间看了这一块,被这个const给难到了,今天参考了几个博客终于理解了一点点,在次做个小结。

对于指针而言,本质上存在两个可变项,一个是指针的指向地址,另一个是指向地址中存放的值。而const的作用就是对这两个可变项进行修饰,让其变成常量。

在位置上的区别是:

        如果const在*的左侧,则const是用来修饰指针指向的变量,即指针指向的地址中存放的的值为常量;

        如果const在*的右侧,则const是用来修饰指针本身,指针本身是常量,其指向固定。

所以大致可以有一下三种情况:

1、指向const对象的指针(const在*的左侧)

const double *pr;

double const *pr;//两种是一样的

/*正确的使用方法*/

const double a=3.14;
pr=&a;

/*错误的使用方法*/

double a=3.14;
pr=&a;


理解:pr是一个指针,指向了一个double类型的常量,指针指向可以发生改变,但是该地址内的值不能发生改变

图解:

 2、const指针(const在*右侧)

int * const pr;

/*正确的使用方法*/
int a=6;
pr=&a;
a=10;
cout<<*pr;//输出结果为10,说明指向地址的值可以发生改变

/*错误的使用方法*/
int a=6;
int b=8;
pr=&a;
pr=&b;//这一步是绝对错误的,因为指针是常量,指向不能发生改变

理解:定义了一个常量指针,该指针指向了一个int类型的变量

图解:

 3、指向const对象的const指针

const int * const pr;
//其用法比较固定,指向不能发生改变,指向地址的值不能发生改变

/*正确的使用方式*/
const int a=8;
pr=&a;

/*错误的使用方式*/
const int a=8;
const int b=9;
int c=2;
p=&a;//ok
p=&b;//error,指向不可变
p=&c;//同上
a=11;//error,a为常量

理解:定义了一个指向int类型常量的const指针。指针的指向不可发生改变,

图解:

 以上,三种情况总结完毕。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值