假设一串代码如下:
int main()
{
int arr[]={1,2,3,4,5,6,7};
int *p=arr; //arr表示数组首元素地址
int **pa=p;
//同时还能有int ***ppa=pa;它就是三级指针。
return 0;
}
p是一个指针变量,它的类型为int *,指向的是arr首元素“1”的地址,他如果存储地址的话,他需要在内存中开辟一段空间来表示自身身处与内存的哪一个位置,那么他自身还有一个地址,pa也是一个指针变量,它的类型是int**,指向的是p的地址。
同理,可以有三级指针,四级指针等等;他们都指向的是前一级指针在内存中所存放的地址。如果对二级指针int **pa解引用一次,那么就是 *pa=p;**pa才等于*p;对pa进行解引用两次才能找到arr数组的首元素。
---------------------------------------------------------------------------------------------------------------------------------
以上是自我理解,如有不对的地方,欢迎指正。