美文网首页iOS Developer程序员
多级指针的本质及推理过程

多级指针的本质及推理过程

作者: 隔壁小鱼 | 来源:发表于2016-08-25 11:42 被阅读544次
  • 多级指针的作用
如果要保存某个指针的地址, 你就会需要用到多级指针.

例如:

普通变量的地址需要用一级指针来保存
一级指针的地址需要用二级指针来保存
二级指针的地址需要用三级指针来保存
三级指针的地址需要用四级指针来保存......

示范代码:

Line1 int num = 1;
Line2 int *p = &num
Line3 int *p1 = p;
Line4 int **p2 = &p1;
Line5 int ***p3 = &p2;

但是, 在初次接触多级指针时, 很多人也许会感到迷惑:

  1. 指针本身不就可以用来保存的地址的吗?
  2. 为什么指针自己的地址却不能用普通指针(一级指针)来保存? 非要用多级指针?

事实上, 在编程中, 如果你将一个二级指针的地址赋值给一个普通指针, 程序是不会报错的, 只会报一个警告: 警告你二级指针的地址应该赋值给三级指针.

需要注意的是, 这只是一个警告, 而不是一个语法错误, 那么这说明了什么呢?

说明多级指针的本质, 其实只是C语言中的一个书写规范!



事实上任何指针都可以保存任何地址(一级指针也可以保存四级指针的地址, 四级指针也可以保存一级指针的地址).
但这样写的话, 阅读性就会变得很差! 所以为了保证阅读性, 就定义了多级指针这样的书写规范.

屏幕快照 2016-08-25 上午11.51.55.png

很多初学者在推理多级指针保存的值的时候会绕不出来, 其实这里面都是有规律的.

  • 关于多级指针的存储的值的推理过程
    我们还以上面的示范代码为例:
Line1 int num = 1;
Line2 int *p = &num
Line3 int *p1 = p;
Line4 int **p2 = &p1;
Line5 int ***p3 = &p2;
屏幕快照 2016-08-25 上午11.35.01.png

运行示例:

20160511234508848.png

相关文章

  • 多级指针的本质及推理过程

    多级指针的作用 如果要保存某个指针的地址, 你就会需要用到多级指针. 例如: 普通变量的地址需要用一级指针来保存一...

  • C语言多级指针

    多级指针 指针中保存着其他指针的地址,我们就称之为多级指针 多级指针的定义 在要保存的指针变量的基础上加一颗星即可...

  • 多级指针

    多级指针注意引用即可,主要的还是多级指针和动态内存之间的跨函数使用内存

  • 【C语言笔记】<十五>指针

    指针的基本概念 指针的注意点 多级指针 指针为什么分类型

  • C++ supplement 指针进阶及const限定符

    在上一节中说到了基本的指针的定义与解析,下面便是升级版,多级指针的理解: 所谓多级指针在于有多重的指针导向,因为指...

  • 12 C指针

    1、指针定义 2、指针进阶 3、指针使用 4、多级指针 4、指针和数组 5、指针和字符串 6、高级指针之和指向函数的指针

  • C语言19 指针取值的两种方式

    C语言19 指针取值的两种方式 一级指针和多级指针 *()与[]的互换表示 总结

  • C语言day08-13多级指针

    pragma mark 多级指针 pragma mark 概念 pragma mark 代码

  • 指针数组以及多级指针

    1 指针数组 2 指向指针的指针

  • C++指针类型间强制转换

    指针变量及不同指针类型的含义 指针变量指针变量,本质上是一个变量,只是它是存放地址的变量,指针的类型代表的是它所指...

网友评论

    本文标题:多级指针的本质及推理过程

    本文链接:https://www.haomeiwen.com/subject/mytasttx.html