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所指的对象可以修改。
以上声明指出,p指向一个const int(这里为4)。因此不能使用p来修改这个值,换句话说,*p的值为const,不能被修改。
注意一点,p的声明并不意味着它指向的值实际上就是一个常量,而只是意味着对p而言,这个值是个常量。如上例中的p指向a,而a不是const,可以通过a来直接改变a的值,但不能使用p指针来修改。
同样,p也可以指向const常量,如下:
以上声明意味着既不能通过p指针修改b的值,也不能通过b本身来修改。
(2)const指针
int* const p;
以上声明可以理解为p是指向一个int的const指针。这就意味着不能使p指向其他的对象,任何试图给p赋值的操作将会导致编译错误。但允许使用指针p来修改a的值。
(3)指向const对象的const指针
const int* const p;
意味着既不能修改p的值,也不能通过p来修改所指对象的值 。
(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对象的指针和const指针
- C++指向const对象的指针和const指针
- C++指向const对象的指针和const指针
- C++之指向const对象的指针和const指针
- C++中的指向const对象的指针、const指针、指向const对象的const指针
- c++ const指针和指向const对象的指针
- “指向const对象的指针” 和 “const指针”
- const和指针(指向const对象的指针、const指针)
- 指向const对象的指针 和 const指针
- 指向const对象的指针和const指针
- 指向const对象的指针和const指针 (转)
- 指向const对象的指针和const指针
- 指向const对象的指针 const指针
- const指针和指向const对象的指针
- “指向const对象的指针” 和 “const指针”
- 指向const对象的指针和const指针
- [转载]如何区分“指向const对象的指针”和“const指针”?
- “指向const对象的指针”和“const指针”
- (转)const和指针(指向const对象的指针、const指针)
- 指向const对象的指针 和 const指针