目录
1.const修饰指针
const就像是给其修饰的指针加上限制。主要有两种情况如下图
此时*p所指空间的内容不可修改。
此时指针变量p所指向的地址不可改变。
2.野指针回顾
野指针出现主要有以下几种情况
1)数组越界访问
2)指针指向的空间被释放
3)指针未初始化直接访问其空间内容
避免野指针方法
1)指针初始化
2) 避免返回函数内部局部变量的地址
3)指针使用后及时置为NULL
3.assert断言
assert使用需要包含头文件include<assert.h>,用来判断指针是否为NULL。如果为空直接报错,同时返回错误产生行号。
如果在使用指针时,具有避免野指针的习惯,可以帮助程序员快速定位错误。或用来判断冒一些函数返回值是否为空 。同时assert可用来通过#defineNDEBUG禁用。
上述const 与assert都可用来增强程序的健壮性,程序更安全。
4.深入理解数组与指针
1)数组名
数组名在大多数情况下为数组首元素地址,当其在sizeof及&数组名时为整个元素地址。
2)指针访问数组
可通过指针变量名【下标】访问数组内容等同于*(数组名+ 下标)和数组名【下标】
3)一维数组传参的本质
一维数组函数传参本质上传递的为数组首元素的地址,对其解引用即可访问数内容。
但数组内部无法用sizeof求整个数组的大小。
5.二级指针
二级指针为存储一级指针变量地址的指针变量。
6.指针数组
存储地址的数组
指针数组应用
指针模拟二维数组