C++整理——const指针

C语言里面const和指针的组合写法经常令人困扰,想不起它真正表达的意义,而且这也是面试、笔试的时候重要考查的基础知识。

看下面三种定义:

①const int   *  p

②int const   *   p

③int  *  const   p

前两种定义表达的意思是一样的:p指针指向的内容不被改变。

最后一种表达的是:p指针的指向不被改变。

是不是有点晕?面试的时候被问起一时想不起来估计叶舌懵逼了。我是这样理解的:按照有意义的最近取义。

例如①:( const int ) ( * p ),单独的const是没有意义的,所以它所以与int结合起来一起解释,后面一个就容易解释得多,表明p是一个指针变量。两部分结合起来解释就是 p是指向了const int的指针,由于指向的内容被定义为const,指针就无权修改内容。

那么②可以这样分:( int  const) (  *  p ),这样分的话,意义就和①一样了。因为声明常量(int const p)和(const int p)一样。

③:( int  )  (  *  const  p ) 因为(int *) 不能组合,所以它表达的意思是const p---》p不能被改变,*----》p是个指针,int-----》p是int的指针,组合一起就是p指针的指向不被改变。由于指向不被改变,所以才要求声明时就需要指定它的指向。



上述理解本人的一些理解总结,至于是否真的是这样,答案在《编译原理》

———————————————————如有问题,请与本人联系,谢谢!————————————————————————


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值