续前言
目录
四、 const修饰指针
(1)const修饰变量
(2)const修饰指针变量
五、 指针运算
(1)指针+-整数——打印数组的每个元素
(2)指针-指针
(3)指针关系运算
六、 野指针
(1)野指针成因和规避
七、 assert断言
(1)strlen优化
八、指针的使用和传址调用
(1)交换两个数
(2)两个值相加
四、const修饰指针
4.1 const修饰变量
被const修饰的变量称为常变量
num本身是变量,变量是可更改的值,当不希望num值被随意改动时,前面加const修饰
const修饰后具有常量属性,在语法上不允许改动
4.2 const修饰指针变量
const 修饰指针有两种情况
(1)const放在*前面;例如: const int* p 或 int const* p
表示:指针变量p本身可以改变,但指针变量指向的内容不可变
(2)const放在*后面 int* const p
表示:指针变量p本身不可改变,指针变量所指向的内容可变
(3)若*前后都加const修饰则不可改变任意值
五、指针运算
5.1 指针+-整数
在往常我们经常使用下标访问的方式来打印数组的每一个元素,如下图:
其实也可以通过传数组的地址,用指针加减整数的形式来打印每一个元素,如下图:
pa指向数组首元素地址,+i 表示找到数组中第i个元素的地址,再解引用则打印元素
5.2 指针-指针
(1)指针是用来存放地址的,指针-指针 == 地址-地址;(2)必须是指向同一块空间的地址才能相减;(3)相减的值是两者间的元素个数
通过模拟实现strlen来演示:
strlen的计算原理是计算'\0'之前的元素个数,用指针-指针的方式实现得有两个指针变量;
一个指向首元素,另一个指向'\0'的位置;两者相减为元素个数
5.3 指针关系运行
指针关系运算和比较关系有关,就是><==
六、野指针的成因和规避
(1)指针未初始化
(2)指针越界访问
(3)指针指向的空间被释放
规避:指针变量不再使⽤时,及时置NULL,指针使⽤之前检查有效性;指针初始化;不可返回局部变量地址
七、assert断言
八、指针使用和传址调用
(1)交换两个数需要改变原有值,用传址
(2)计算两个数的和不会改变原始值,用传值
形参是实参的一份临时拷贝,更改形参并不会影响实参;朋友们要根据自己的需求判断什么时候传址合适。
卖命加载中........