c++ 双重指针 & const修饰的双重指针

被const修饰的指针如何用双重指针表示?

普通 指针和双重指针

int *p1;

int **q1 = &p1;

const修饰的指针和双重指针

双重指针两个*的顺序

int *p1;
int * * q1;
  • q1左边的第一个*是方框q1右边的第一个箭头,指向p1

  • q1左侧的第二个*是方框p1右边的箭头,和int * p1*是同一个箭头;

const修饰变量//指针常量

int * const p2 = &a;
int * const * q2 = &p2;

const修饰了p2,因此p2中保存的数据(地址)不能改变,所以,q2指向p2的指针(紫线1)是应当被const修饰的

const修饰指针//常量指针

const int * p3;
const int * * q3 = &p3;

p3的*被const(绿线),因此用const修饰**q的第一个*(紫线2)

const修饰指针和常量

const int * const p4 = &a;
const int * const * q4 = &p4;

p4的*被const(上面那条绿线),因此用const修饰第一个*(紫线2)

p4同样被const掉,p4的值无法改变,因此要用const修饰掉q4指向p4的*(紫线1)

ALL code

int main()
{   int a = 10;

    int *p1;
    int * const p2 = &a;
    const int * p3;
    const int * const p4 = &a;

    int **q1 = &p1;
    int * const * q2 = &p2;
    const int * * q3 = &p3;
    const int * const * q4 = &p4;

    return 0;
}
posted @ 2020-10-20 11:35  wztuuu  阅读(974)  评论(0)    收藏  举报