A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Ye•Ye 中级黑马   /  2014-5-5 13:18  /  1183 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Ye•Ye 于 2014-5-6 11:19 编辑

请问这三种写法有什么区别啊?
char * const p;
char const * p;
const char *p;
貌似效果是一样的。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

2 个回复

正序浏览
const char *p;表示指针变量p指向的char变量是常变量,不能通过p来改变其值。
char * const p;表示p是指向char变量的常指针,p的值(即p的指向)不能改变。
char const * p;指针指向的内容定为const,也就是不能修改指针指向的内容。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
以前我刚好回答过这个类似问题:
1)p因为有了const 的修饰,所以只是一个指针常量:也就是说p值是不可修改的。
2)整个*p的前面没有const 的修饰。也就是说,*p是变量而不是常量。

总结两:
1) 如果const 修饰在*p前,则不能改的是*p(即不能类似这样:*p=50;赋值)而不是指p。
2) 如果const 是直接写在p前,则p不能改(即不能类似这样:p=&i;赋值)。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马