const char * 三者组合后,性质辨别

在各种面试中,常出现这几种形式:const char*p ,char const *p ,char*const p的区别问题,常常很混乱,不清楚,本人一段时间内也很糊涂,找不到好的方法来辨别。在相关资料的帮助下,终于水落石出了!

Bjarne 在他的The C++ Programing Language 给出了一个助记的方法 把一个声明从右往左读。(*读成 point to),总结如下:

const char*p  :p is a  point  to the const char 即 p是一个指向只读量(不能说是常数,const意味着”只读“)的指针。char型数是不可以修改的,但指针是可以的。

char*const p:p is a const point to the char 即p是一个只读指针(常指针),指向char的变量。很显然,指针不可以修改,但char型数可以修改。

char const *p :由于C++中没有const *的运算符,所以*和P结合,const只能和char结合,和第一种(等同于const char*p)是一样性质的指针。

比较清楚了吧!

当然还有一些其他组合形式,比较简单,如:

const char p:p是一个常char型数。

char const p:同上,一个概念,

char const* p const: 这个怎么分析呢?按照上面的方法,p是一个指向常char型的常指针。即 char和指针都不可以修改的。这样划分一下(char const)(* p const)不就清楚了啊!


感谢vinice,他的博客连接打不开,抱歉!

有错误,欢迎大家批评指正!欢迎转载,请标注连接。


  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值