C++ 中的指针常量、常量指针与指向常量的指针常量

在学习 C++ 的指针部分时,被 const 用于指针的情形给难住了。指针作为一种特殊类型的变量,它既存储着内存地址,又可以用来修改内存中的数据。

指针的定义:存储内存地址的一种变量。

声明指针:PointedType* pointer_var_name = NULL; // safely initialized

const关键字的含义:所修饰的对象或者变量不能被修改

const和指针搭配可以有三种情形:

  1. 指针常量
    例: int* const p_var = &var;
    const关键字修饰变量p_var,此变量就不能被更改了。这时指针对变量的地址引用不可变,但是可以改变变量的值。
  2. 常量指针
    例: const int* p_var = &var;
    这时,int* 直接修饰了变量 p_var,并非不可变,因此指针对变量的地址引用是可变的,但是引用变量的值不可变。(即指向常量的指针。)
  3. 指向常量的指针常量
    例:const int* const p_var = &var;
    这种最好理解,内存引用地址和引用变量的值都不能变。

其实主要是判断const关键字的位置,它在变量名旁边说明引用地址不能变,如果是在类型前面说明引用变量的值不能变。

发表评论