小叮当的任意门——指针
1. 指针是什么?
在讲指针之前我们是需要先了解内存的
指针是内存中一个最小单元的编号,也就是地址
取地址a是取的第一个字节的地址
把a的地址存储起来放在pa中,存起来跟不存起来是有区别的。
平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量
要知道*pa与pa的区别。
为4GB
2. 指针和指针类型
为什么不用统一的ptr类型呢?因为各个类型有自己的作用。
为什么全变0了?
这个怎么就变一个呀?
这就是指针类型的意义
所以
决定步长
用循环也可以改变
1. 指针±整数
这就是刚刚上面讲的
2. 指针的解引用
上面也说明过
3. 野指针
1. 野指针的成因
未初始
这里面没有初始化
指针越界访问
在这里越界访问了,所以后面的就随机打印一个数字
指针指向的空间释放
这个也是的,李四叫张三来如家客栈,住宾馆,后面张三来了,李四早就退房了。
2. 如何规避野指针
4. 指针运算
这其实就是前面讲的
要注意:
这就不行
指针减指针
后面因为是循环
这里要多减一个1。如果是\0,因为while循环,
指针的关系运算
要有所指
下面的小细节,其他写法也可以
这就厉害了
因为
5. 二级指针
取a的地址到指针变量pa中,就是那个16进制的,因为pa为指针变量,是指针变量就有自己地址,与a是不一样的。
在第一个指针变量再取出地址,就是二级指针变量了
这里的 * 是指针变量的标志
这里的画圈是对于前面变量的类型
三级还是比较少见,了解即可
要知道解引用操作符的作用,直接对于前面。
看看这就直接对于a去了,最后打印10
从后面修改也是可以的,这是互通的。
6. 指针数组
其实我们前面学习的也是一样的
其实就是这样
下面我们使用一维数组,模拟一个二维数组
总体是比较简单明了的,学习就是慢慢迭代,前后链接起来就容易多了。
守得云开见月明