https://blog.csdn.net/ZackSock/article/details/101594794
这篇博文讲得非常好
指针变量作为一个变量也有自己的存储地址,而指向指针变量的存储地址就被称为指针的指针,即二级指针。依次叠加,就形成了多级指针。
//定义普通变量和指针变量
int *pi, i = 10;
//定义二级指针变量
int **ppi;
//给指针变量赋初值
pi = &i;
//给二级指针变量赋初值
ppi = π
//我们可以直接用二级指针做普通指针的操作
//获取 i 的内容
printf(“i = %d”, **ppi);
//获取 i 的地址
printf(“i 的地址为%d”,
*ppi);
因为&和*是逆运算,结合为1
如果不懂,则
pi = &i; 两边同时取*, pi = &i; 等价于 *pi =i
又因为ppi = π 两边同时取*,*ppi = *&pi=pi;
所以i=*pi,pi=*ppi,i=**ppi
&i=&**ppi=*ppi