小编先和读者们说一下结论:
当const在*左边时:*p不能改,p能改.
当const在*右边时:*p能改,p不能改.
当const在*左边和右边都存在时:*p和p都不能改.
原因如下:
我们先定义一个变量和指针
(1)当只有一个const并且const在*左边时:
(const int*p 与 int const *p,)*p的值不能改,但是p(地址)能改.我们可以看到第一,三张图片第五行*p下面有红线表示错误.而第二,四张没有红线的地方表示正确.所以我们可知道const int*p 与 int const *p是相同的只是书写方法不同.
(2)当只有一个const并且const在*右边时:
(int * const p)*p的值能改,但是p不能改.如图
(3)当const在*左边和右边都有时:
(const int * const p)*p和p都不能改,如图:
还有不理解的小伙伴欢迎评论或者私聊.