指针
讲数组离不开指针,什么是指针:首先指针叫指针变量,用来保存地址
理解指针:
每个数组元素都有自己的地址,元素就是地址保存的内容,地址可以保存,保存地址的变量就是指针。
当然像二维数组或二维数组以上地址中还有地址,运用指针取出更深层地址时要用2级以上指针
既然是变量就有类型,如何查看?
数组与指针的关系
数组的数组名就是整个数组的首地址=数组中第一个元素的地址(数值相同但定义不同)
对数组名进行偏移与数组中的元素偏移不同请看上图
区分指针数组与数组指针
指针数组存放的是地址,指针数组里存放的是元素
指针运用
特殊指针
void*型
可保存任意类型地址,但不能直接引用
如果要使用,需要运用强制转换
NULL型
Segmentation fault (core dumped) 段错误: 一般由用户访问了非法的内存所导致
这是错误写法
正确写法:
野指针
野指针就是指针中保存的是无效的内存地址(随机的,不正确的,没有限制的)。
野指针出现的情况
1.指针未初始化:
2.指针越界访问:
3.指针指向空间释放:
如何规避野指针
1. 指针初始化, int* p = NULL;
2. 小心指针越界
3. 指针指向空间释放,及时置空
4. 指针使用之前检查有效性