如果一个指针指向的是另外一个指针,我们就称它为二级指针,或者指向指针的指针。
例如:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int x = 100;
int *p = &x;
int** pt=&p;
printf("pt指向的指针所指向的内存单元的值是:%d\n",**pt);
printf("p指向的内存单元的值是:%d\n",*p);
printf("x的值是:%d\n",x);
printf("pt的值是:%d\n",pt);
printf("p的地址是:%d\n",&p);
return 0;
}
运行结果:
pt指向的指针所指向的内存单元的值是:100
p指向的内存单元的值是:100
x的值是:100
pt的值是:6487560
p的地址是:6487560
x,p和pt关系图如下:

同理我们如果要定义一个三级指针指向pt,可以这样写:
int*** ppt =&pt;
但是在实际开发中最多会用到二级指针,几乎用不到二级以上的高级指针。