9.C语言之指针(6)多级指针(通俗易懂)

此文章为指针系列的第6篇,如果觉得不错,可关注并收藏,后续会持续更新


什么是多级指针?

        所谓的多级指针,就是一个指向指针的指针

我们先清楚一些关于指针的基本概念:

  1. 指针就是地址,地址就是指针
  2. 指针变量就是存放内存单元编号的变量  
  3. int *p 它的意义是定义了一个指针变量p,p存放的是整型变量的地址
  4. 赋值语句p=&i;的含义&i就是取i的地址,所以这句话表达的是将i的地址放在了变量p中
  5. *p的意思就是以p的内容为地址的变量

我们如果定义了整型变量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;
}

这段程序画成图如下所示

9.C语言之指针(6)多级指针(通俗易懂)_第1张图片

我们定义了一个整型变量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**类型,也就是定义一个指向指针的指针

你可能感兴趣的:(C语言,c语言,c++,开发语言,编辑器)