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;
}

浙公网安备 33010602011771号