关于char const **p、char * const *p、char ** const p的区别

一直对指针理解的不是很深,在复试也被提问这方面的问题回答凌乱十分尴尬,索性一次性好好理解一下指针和const结合的char const **p、char * const *p、char ** const p之间的区别。

理解思路

理解方法:将const当作函数,后面跟什么,什么就不变。
首先区别const char *p, char const *p,char * const p三者的区别:
(1)const char *p
(2)char const *p
(3)char * const p

(1)和(2)其实是一样的,p是一个指向const char的指针,都是*p不能变,即值不能修改。(3)中表示p是一个指向char的const指针,即地址不能变,p 的指向不能修改。

所以,沿用此方法,char const **p、char * const *p、char ** const p就相对好区分了。
char const **p:const修饰**p,所以p二级指针的值不能改,即**p不能进行赋值。
char * const *p:const修饰*p,所以*p不能修改。
char **const p:const修饰p,所以指针p不能进行重新的指向,所以在初始化时就要进行重新定向。

以上是本人的一点理解,有不足之处希望各位指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值