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

  • 多级指针的作用
如果要保存某个指针的地址, 你就会需要用到多级指针.

例如:

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

示范代码:

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 最近真的是忙的不可开交,公司一直给安排任务,连学习和写笔记的时间都没有了,落下好几次课的笔记都没有写,所以我...
    Xiho丶阅读 5,415评论 1 12
  • C语言指针的总结 1. 变量 不同类型的变量在内存中占据不同的字节空间。 内存中存储数据的最小基本单位是字节,每一...
    xx_cc阅读 9,389评论 11 39
  • 指针入门 ****** 由于pointer存的是i的内存地址,多以对pointer的操作就是对变量i的操作*...
    往事一块六毛八阅读 3,616评论 0 1
  • 有点愧疚,这几个月荒废了,也浪费了很多时间。接下来是我看的关于核心语法的一些笔记,可能不全也可能有错误,希望大家可...
    关情纸尾阅读 1,765评论 0 1
  • 完成毕业答辩后,心情一直很沉重。一边是自己认为很努力地在完成毕设,一边是老师直言不讳地“数落”,还有一边是作业的繁...
    Nara07阅读 2,415评论 0 0

友情链接更多精彩内容