指针的使用和传址调用:
函数调用分为传值调用和传址调用
传值调用:函数在调用的时候,传递的是值;
传址调用:函数在调用的时候,传递的是地址。
指针的使用:
strlen的模拟实现
原理:参数str接收⼀个字符串的起始地址,然后开始统计字符串中 \0 之前的字符个数,最终返回⻓度。 如果要模拟实现只要从起始地址开始向后逐个字符的遍历,只要不是 \0 字符,计数器就+1,这样直到 \0 就停⽌。
这个代码还可以继续完善,自己试试吧(提示:前面的assert处理)
为何要学传址调用:有些问题不使用指针无法解决
指针的传址调用:
传值调用(没有使用指针),传址调用(使用了指针)
函数的实参传给形参时,形参是实参的一份临时拷贝;形参有自己的独立空间,对形参的修改不会影响实参
数组名的理解:数组首元素的地址
特殊情况:
2.使用指针访问数组
一堆数组传参的本质:
所以函数形参的部分理论上应该使用变量来接收首元素的地址。那么函数内部我们写sizeof(arr)计算的是一个地址的大小,而不是数组的大小(这部分可以回去看深入了解指针(1))。正是因为函数的参数部分的本质是指针,所以在函数内部是没办法求得数组元素个数的。
冒泡排序(排序算法之一,之后会出一章专门讲排序方法):
冒泡排序优化:
这种优化可以减少冒泡排序的比较次数