C++中const char *p和char const *p

constchar*p和charconst*p有什么差别,自己搞的不是很清楚特别在编程的时候有点混,哪位高手指点下啊... const char *p 和 char const *p 有什么差别,自己搞的不是很清楚 特别在编程的时候有点混,哪位高手指点下啊 展开
 我来答
匿名用户
2013-09-09
展开全部
这里是const char *p;他的意思是p指向的目标空间的内容不可变化.
例如定义char c='A'; p=&c;则c的内容不可以变化.如c='B';等一些企图改变变量c的值的做法都不行.

然而p仍然是动态的,就是它还可以指向别的空间,被赋予新的地址值,只是被他指向的目标空间的内容不可变化,如上面的c值始终为'A',不可以更新,而一但p指向别处,则c就更新了.

问题补充中的变化实质上是p的值的变化,这是允许的.因为字符串出现在表达式中时它的值是它的首字母的地址,所以"xxx"和"yyy"都是地址值.
而若企图改变*p的值则是非法,例如问题补充中,企图修改"yyy"中第1个y所在位置的值则被认为是非法的.

最后我想说const char *p;与char * const p;的区别,他们恰好相反,后者是表明指针p的值不可变,但它指向目标的值可变.
例如char * const p; char c='A',m; p=&c;执行后,c='B'可以执行,但p=&m则被认为是非法.

就这么多了,希望能帮助到你.
匿名用户
2013-09-09
展开全部
const cahr *p等价于char const *p楼主可以去看看C++的IEC/ISO标准其实这两个没区别但是有一个和它们有区别就是char *const p;你写的两个意思是指针p指向了一个const char *, 指针可以重指向, 但是指向的值不可以改变我上面写的char * const p意思是指针指向了一个char *, 我可以改变它的值, 但是我的指针p是const型的, 不可以重指向了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-09
展开全部
这2个没有差别, const出现在*号左边,表示被指物是常量;const出现在*号右边,表示指针自身是常量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式