C++ 指针常量与常量指针

关于这两个概念是特别容易混淆的,也是不太好理解与记忆的;在此给出自己的理解与记忆方式,方便大家相互学习。

指针常量

指针常量:本质是一个常量(重点在于后面两个字 "常量");

指针所存储的内容(或者说 指针的值):是一个地址;那么 指针常量  即表明:该指针的值是常量,其所指向的地址是不能随意改动的;但是所指向地址上的内容是可以改动的

int a = 3;
int b = 4;
int *const p  = &a;  // p 为 指针常量,指向整形变量a, 其值为 a 变量的地址;
p = &b; // error, p 的值不能随意更改,已经指向了 a 变量的地址,不能再指向其他变量了;

*p = 10;  // ok, p 虽然是指针常量,但它所指向的那个地址上的内容即 int a 是个变量,a 的值是可以修改的

正如上图最后一行代码:*p = 10 ,通过这种方式来修改 a 变量的值是 ok 的。

指针常量 ---->  int *const p;记忆方式:从左往右读,先是指针*,后是常 const,最后是变量名称,const  在  *  的右侧)  

常量指针

常量指针:本质是一个指针(重点在于后面两个字 "指针")

常量指针:指向的是一个常对象,不可修改的对象;即其所指向地址上的内容是不可以随意修改的;但是常量指针 本身是一个指针,是个变量,也就意味着它的指向是可以随意改变的;既可以指向这个常对象,又可以指向别的常对象;

int a = 4;
int b = 8;
const int *p = &a;  // p 为常量指针,指向常对象 a 变量;
*p = 40;  // error  p 所指向的是常量对象,不可以通过该 指针 修改所指向变量的内容;
p = &b;   // ok, 可修改指针的指向,将 p 指向变量 b 是可以的;

常量指针   ---->  const int *p  或  int const* p  记忆方式:也是从左往右读,先是常 const ,后是指针 *, const  在  *  的左侧

还有一种是,指针的指向以及所指向的内容都是不能改变的指针,形如:

const int * const p;  or   int const * const p;

int a = 4;
int b = 6;
int const *const qq = &a;  // qq 的指向以及所指向的内容都不能改变 
*qq = 45;  //  error  不能改变所指向地址上的内容
qq = &b;   //  error  不能改变指向
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值