c++primer 第五版 指向常量的指针和常量指针

c++ primer中对于“常量指针”的定义和网上的版本相反,而且删去了"指针常量"的概念,引入了一个新的概念——"指向常量的指针”,但各种类型的含义还是一致的,只是叫法不一样了。举例:

int a;
const int *p = &a;
//与int const* p = &a等效,只取决于*和const的相对位置
表示的是“指向常量的指针”,普遍的叫法是“常量指针”。

这是指针p指向的对象是一个整型常量,指向的对象是不可以改变的,但对指针p本身并没有限制,p的值可以改变,也就是可以指向新的对象。

修改:上一句“指向的对象是不可以改变的”这句话有失偏颇,“指向常量的指针,不过是指针‘自以为是’罢了,它们觉得自己指向了常量,仅仅要求不能通过该指针改变对象的值,而没有规定那个对象的值不能通过其他途径改变。”(同样适用于常量引用)


int a = 0;
int *const p = &a;
按照c++primer 第五版的定义,p是一个“常量指针”,这里与网上普遍的说法也不一样,那里叫“指针常量”。

const紧挨着p表示p的值不可改变,即p始终指向a。但是指向的对象的值能否改变依赖于对象本身的类型,这里的a非常量,a的值是可以改变的。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值