常量指针和指针常量到底是什么!-基于C++Primer原文

最近在阅读C++primer,对于常量指针和指针常量愈发困惑,尤其是在网上查阅资料后,发现CSDN某百赞文章写的与C++Primer居然截然相反!这给我在学习过程中带来很大的难题和痛苦。

很多文章里如下写道:(注意下面这段话是错误的!)

        ~~~

                常量指针:const int* p;  

                指针常量:int* const p = &i;

                他们的判断依据是从前往后读,先读到常量,再读到指针,所以是 const int*

                /*上面这种判断依据是错误的*/

        ~~~

但是,事实上,在C++Primer原文中,定义是截然相反的(书56页)。

正解:从英文来记忆

其实我们对比英文就可以很好的理解,常量指针的英文为:const pointer,这样看是不是就很显然啦。const pointer,一个是常量的指针,也就是说这个指针本身是常量,而不是说它指向了一个常量!

指针常量则是 pointer to const, 也就是指向了一个常量的指针.

所以实际上,应该是下面这样:

~~~

        常量指针(const pointer): int* const p = &i; //常量指针必须初始化

        指针常量  (pointer to const): const int* p;

        记忆诀窍:英文原单词

~~~

详细原文可参看C++Primer第五版56页,欢迎大家讨论!推荐大家在学习中还是要多参看书籍,写的很清楚也很明白。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值