常量指针和指针常量

int a = 10;
const int* b = &a;//常量指针
int const* c = &a;//常量指针

int* const d = &a;//指针常量
  • 常量指针:常量的指针,指针所指向的地址里的内容不能被改变。不能被改变是指不能通过这个指针来改变。
  • 指针常量:指针类型的常量,指针只能赋值一次(定义时除外),不能再修改指针指向,类似数组名称。

参看:
百度百科定义:
指针常量
常量指针

知乎问答
说是参考《c primer plus》

以上关于指针常量和常量指针的定义正好是相反的,但说的都是一个意思,本地还是一样。
特意查看了《c++ primer plus》

As you saw earlier, assigning a non-const pointer to a const pointer is okay, provided that you’re
dealing with just one level of indirection:
int age = 39; // age++ is a valid operation
int * pd = &age; // *pd = 41 is a valid operation
const int * pt = pd; // *pt = 42 is an invalid operation

这样来看const pointer如果这样定义的话,如果翻译成常量指针,则其定义就是指向常量的指针
那么,指针常量 其定义就是指针类型的常量了。
比较容易误导的地方就是,常量指针和常指针。习惯上,常指针更倾向去表达常属性的指针,实际常指针按翻译来讲,const pointer确是常量的指针。所以常指针(有常属性的指针),其实是指针常量。

从代码上区分:
看const在*前还是*后
*前则修饰*p,即*p为常量
*后则修饰p,即p为常量

从定义上区分:
那就从左往右,*读指针,const读常量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值