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

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

指针常量

const int m = 3; //m是一个常量,不能被改变
int n = 10;
int *p = &m; //错误,p是一个普通指针,不能指向常量m
const int *p1 = &m ; //正确,因为p1是常量指针,可以指向常量与非常量
p1 = &n; //正确,但是不能通过*p1更改n的值,只能存放n的地址
//还有一点是指针类型必须和所指对象类型一致

常量指针:必须被初始化,而且一旦初始化完成,则它的值(存放的地址)不可被改变

int m = 10;
int n = 2;
int *const p = &m; //正确
p = &n; //错误,因为p被const修饰,是一个常量,存放的是m的地址,不允许被更改
*p = 3; //正确,因为*P没被const修饰,所以可以更改,此时m的值被更改为3
const int m = 10;
int *const p = &m; //错误
const int *const q = &m; //正确,q是一个指向常量对象的常量指针

符合类型从右向左读,从变量名称最近的地方开始解读符号和关键字对其的影响,如int *const p,关键字const只修饰了p,也就是说p是一个常量对象,在前边是一个 * 表示p是常量指针,最后是int表示是什么类型的

指针本身是一个常量但并不意味着不能通过指针修改所指对象的值,能否这样做还取决于所指对象的类型

以上是从c++ prime一书中得到,可能与其他有所差别,仅供参考,欢迎各位大佬指出错误与不当之处

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值