您的位置:首页 > 编程语言 > C语言/C++

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

2017-07-05 08:39 302 查看
C++ 指向const对象的指针和const指针

(1)指向const对象的指针
     const int* p; 或 int const* p;
这里的p是一个指向const对象的指针,const修饰的是指针p所指的对象,而不是修饰指针p。指针p本身不是const,定义时不需要初始化。这就意味着不能通过指针p去修改所指对象的值,但是指针p所指的对象可以修改。
int a = 4;
const int* p = &a;

以上声明指出,p指向一个const int(这里为4)。因此不能使用p来修改这个值,换句话说,*p的值为const,不能被修改。
*p += 1;     //error
cin>>*p;     //error
a = 5;       //ok

注意一点,p的声明并不意味着它指向的值实际上就是一个常量,而只是意味着对p而言,这个值是个常量。如上例中的p指向a,而a不是const,可以通过a来直接改变a的值,但不能使用p指针来修改。
同样,p也可以指向const常量,如下:
const int b = 1;
const int* p = &b;
*p +=1;          //error
b += 1;          //error

以上声明意味着既不能通过p指针修改b的值,也不能通过b本身来修改。

(2)const指针
     int* const p;
int a = 4;
int* const p = &a;

以上声明可以理解为p是指向一个int的const指针。这就意味着不能使p指向其他的对象,任何试图给p赋值的操作将会导致编译错误。但允许使用指针p来修改a的值。
int b = 5;
p = &b;     //error
*p = 5;     //ok


(3)指向const对象的const指针
     const int* const p;
const int a = 7;
const int* const p = &a;

意味着既不能修改p的值,也不能通过p来修改所指对象的值 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 指针 const