一级指针:存放的是普通变量的内存地址。
二级指针:存放一级指针的地址。
int a=123; //常变量
int *p=&a; //一级指针*p,指向a;
int **p2=&p; //二级指针**p2,指向*p;
printf(“%d\n”,a); //a的值
printf(“%d\n”,p); //a的地址,等价于&a;
printf(“%d\n”,*p); //a的值
printf(“%d\n”,p2); //p的地址,等价于&p;
printf(“%d\n”,*p2); //p的值,等价于&a;
printf(“%d\n”,**p2); //a的值,等价于*(*p2)=*p=a;
从上面的输出可以看出,二级指针存放的是一级指针的地址(p2=&p),解应用一次得到*p2=p,解应用两次,得到**p2=*p=a;关系图如下: