- 多级指针的作用
如果要保存某个指针的地址, 你就会需要用到多级指针.
例如:
普通变量的地址需要用一级指针来保存
一级指针的地址需要用二级指针来保存
二级指针的地址需要用三级指针来保存
三级指针的地址需要用四级指针来保存......
示范代码:
Line1 int num = 1;
Line2 int *p = &num
Line3 int *p1 = p;
Line4 int **p2 = &p1;
Line5 int ***p3 = &p2;
但是, 在初次接触多级指针时, 很多人也许会感到迷惑:
- 指针本身不就可以用来保存的地址的吗?
- 为什么指针自己的地址却不能用普通指针(一级指针)来保存? 非要用多级指针?
事实上, 在编程中, 如果你将一个二级指针的地址赋值给一个普通指针, 程序是不会报错的, 只会报一个警告: 警告你二级指针的地址应该赋值给三级指针.
需要注意的是, 这只是一个警告, 而不是一个语法错误, 那么这说明了什么呢?
说明多级指针的本质, 其实只是C语言中的一个书写规范!
事实上任何指针都可以保存任何地址(一级指针也可以保存四级指针的地址, 四级指针也可以保存一级指针的地址).
但这样写的话, 阅读性就会变得很差! 所以为了保证阅读性, 就定义了多级指针这样的书写规范.
很多初学者在推理多级指针保存的值的时候会绕不出来, 其实这里面都是有规律的.
-
关于多级指针的存储的值的推理过程
我们还以上面的示范代码为例:
Line1 int num = 1;
Line2 int *p = &num
Line3 int *p1 = p;
Line4 int **p2 = &p1;
Line5 int ***p3 = &p2;
运行示例: