指向const对象的指针 和 const指针的区别

可以从以下简单概念区别

const 对象的指针:指针所指的对象不能改变。
const 指针:指针本身不能改变。

指向const对象的指针深层次理解

      c++中定义的const对象,如果想要用指针指向它,该指针就必须有const特性即需要用const对象指针。但是也可以用const对象指针去指向非const对象,而此时就不能通过此const对象指针修改此非const对象的值。看一个简单的例子:

const double pi1=3.14;

double pi2=3.1415;

定义一个const对象指针:

const double *pt;   //一般用const修饰的变量都是从右向左读(如:pt 是一个指向 double 类型的const 对象的指针

此时   pt=&pi1;

或者   pt=&pi2;

都是正确的。(即,const对象指针可以指向不同的对象的地址不管是const的还是非const的

而 对 pt=&pi1; 进行解赋值操作  *pt=3.1415926;或者对 pt=&pi2; 进行解赋值操作  *pt=3.1415926;都是错误的。

(此时 const对象指针是不能够改变对象的值,不管是const对象的值,还是非const对象的值.)

const 指针

因为const指针是const变量,所以根据c++特性。const指针定义时必须初始化。故其定义与const对象指针不一样。

如:

int num=0;

int *const p=#

必须有初始化的地址,所以其与const对象指针定义不一样。const对象指针可以定义成 const int * p;可以不用初始化。

const 指针所指对象的值能否修改完全取决于对象的类型(若是非const对象类型就可以改变其值,若是const对象类型就无法改变其值)例如上面的 例子就可以通过

*p=1;改变num的值,此时num=1;

若 const int num =0;int *const p=# *p=1;就会出现编译错误。


最后还有一种指针叫   指向const对象的const指针(因为是const变量所以定义是必须初始化)

const double pi=3.1415926;

const double *const pt=π//pt首先是一个 const 指针,指向 double 类型的 const 对象



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值