栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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;
}

这段程序画成图如下所示

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011623.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号