此文章为指针系列的第6篇,如果觉得不错,可关注并收藏,后续会持续更新
什么是多级指针?
所谓的多级指针,就是一个指向指针的指针
我们先清楚一些关于指针的基本概念:
我们如果定义了整型变量i,如果想定义一个变量来指向i的时候我们如何定义呢?
int *p = &i;
我们可以看出来,如果是想保存int类型的地址,我们需要定义int *类型的变量
所以如果我们想保存int*类型的变量,就需要定义int**类型,也就是定义一个指向指针的指针
所以如果我们想要保存p变量的地址,就该这样定义
int**q = &p;
依次类推
如果我们想要保存q的地址,就要这样定义
int***r = &q;
我们通过来一个程序并画图来快速理解
int main(int argc, char const *argv[])
{
int i = 5;
int *p = &i; // p变量存放int类型地址
int **q = &p; // q变量存放int*类型地址
int ***r = &q; // r变量存放int**类型地址
return 0;
}
这段程序画成图如下所示
我们定义了一个整型变量i,然后通过p变量来保存i的地址,此时*p就等于i =5
接着我们定义了变量q来保存p的地址,此时q指向p,*q就等于p = 1000H,**q就等于*p=i=5
最后定义了变量r保存q的地址,*r=q=2000H, **r = *q=p =1000H,***r = *p =5
这里i为int类型,p为int*类型,q为int**类型,r为int***类型
总结:
所谓的多级指针,就是一个指向指针的指针
想保存int类型的地址,我们需要定义int *类型的变量
我们想保存int*类型的变量,就需要定义int**类型,也就是定义一个指向指针的指针