代码改变世界

指向const对象的指针和const指针

2012-09-03 18:11  kennyMc  阅读(799)  评论(0)    收藏  举报

1.指向const对象的指针
const char c='a';
const char c1='b';
const char* p=&c;

p=&c1;

上面的p就是指向const对象的指针,这里无法通过p来修改所指向对象的值,如果我们使用p来修改指向对象的值,编译器会报错。

*p='c';//非法的修改,编译器不通过

但是我们可以修改p指针指向的对象,因为这里指针P不是const的。

 

上面指针p是指向const对象的,假如指向一个非const对象,也无法通过p来修改指向对象的值,因为这里指针p是“自以为指向const的指针”。

假如指针p指向非const对象,那么我们可以通过修改该对象的值来达到修改*p的值。

char c='a';

const char* p=&c;

c='b';//这里是合法的,*p输出就是b 2.const指针

 

2.const指针

char c='a';
char* const p=&c;

这里常量指针p指向的是一个非常量对象c,我们可以*p='b';这样来修改c的值。

指针p是常量指针,所以我们无法修改p指向其它对象,是否可以修改指针p指向对象的值取决于被指向对象是否是const。

p=&c1;//这里就编译不过

 

本文版权归kennyMc和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。