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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 李鹏-ios 于 2014-5-15 15:02 编辑

如标题所示,const char *p与char * const p 什么不同?哪个可以改变的?

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

5 个回复

倒序浏览
看看这个
const意味着只读”,下面的声明都是什么意思?
const int a;
int const a;
const int *a;
int * const a;
int const * a const;  
前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

回复 使用道具 举报
gaoxinglei123 来自手机 中级黑马 2014-4-29 10:29:02
藤椅
const char *p等价于char const *p是指*p指向的内容为常量。char类型的。char * const p是指指针变量p为常量。即p变量储存的地址不能修改
回复 使用道具 举报
gaoxinglei123 发表于 2014-4-29 10:29
const char *p等价于char const *p是指*p指向的内容为常量。char类型的。char * const p是指指针变量p为常 ...

char * const p 在程序中这种有什么实际作用吗?谢谢
回复 使用道具 举报
gmadong@163.com 发表于 2014-4-29 08:55
看看这个
const意味着只读”,下面的声明都是什么意思?
const int a;

能举个实际运用的例子吗?大体意思懂了,还是有点模糊。谢谢!
回复 使用道具 举报
const int *p
首先const 修饰的是整个*p。所以*p是常量,是不能被赋值的。
其次,p前并没有用const 修饰,所以p是指针变量,能被赋值重新指向另一内存地址的

int *const p
1)p因为有了const 的修饰,所以只是一个指针常量:也就是说p值是不可修改的。
2)整个*p的前面没有const 的修饰。也就是说,*p是变量而不是常量,所以我们可以通过*p来修改它所指内存i1的值.

总结:
如果const 修饰在*p前,则不能改的是*p(即不能类似这样:*p=50;赋值)而不是指pi。
如果const 是直接写在p前,则p不能改(即不能类似这样:p=&i;赋值)。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马