指针的const限定

指针的const限定

1.指向const对象的指针

1
2
3
4
5
6
const int *p;//或int const *p;
int a;
p = &a;//正确,p不是只读的
*p = 42;//错误,*p是只读的
const int *cptrf = &f;//正确
int *ptr = &p;//错误
  • const对象指针的地址可以赋给const对象的指针,const对象指针的地址不能赋给非const对象的指针。
  • 不能使用指向const对象的指针修改指向对象。
  • 不能保证指向const的指针所指对象的值一定不被其他方式该改变(如果指向对象是一个普通变量就可以直接修改)。

2.const指针

1
int *const ptr;
  • 这表示 ptr是一个常量指针,指针本身的地址不能修改,但可以通过指针修改它所指向的对象的值。
    1
    2
    3
    ptr = &b;
    ptr = pc;
    ptr++;//均错误,ptr是只读的
  • 与任何const量一样,const指针必须在定义时初始化。

3.指向const对象的const指针

1
const double const* pi = 3;
  • 这表示pi是一个常量指针,指向的对象是常量。不能通过pi修改所指向对象的值,并且指针本身的地址也不能修改。

指针的const限定
http://example.com/2025/01/07/c review/
作者
Lanxinmob
发布于
2025年1月7日
许可协议