深入了解指针(2)

指针的使用和传址调用:

函数调用分为传值调用和传址调用

传值调用:函数在调用的时候,传递的是值;

传址调用:函数在调用的时候,传递的是地址。

指针的使用:

strlen的模拟实现

原理:参数str接收⼀个字符串的起始地址,然后开始统计字符串中 \0 之前的字符个数,最终返回⻓度。 如果要模拟实现只要从起始地址开始向后逐个字符的遍历,只要不是 \0 字符,计数器就+1,这样直到 \0 就停⽌。

这个代码还可以继续完善,自己试试吧(提示:前面的assert处理)

为何要学传址调用:有些问题不使用指针无法解决

指针的传址调用:

传值调用(没有使用指针),传址调用(使用了指针)

函数的实参传给形参时,形参是实参的一份临时拷贝;形参有自己的独立空间,对形参的修改不会影响实参

数组名的理解:数组首元素的地址

特殊情况:

2.使用指针访问数组

一堆数组传参的本质:

所以函数形参的部分理论上应该使用变量来接收首元素的地址。那么函数内部我们写sizeof(arr)计算的是一个地址的大小,而不是数组的大小(这部分可以回去看深入了解指针(1))。正是因为函数的参数部分的本质是指针,所以在函数内部是没办法求得数组元素个数的。

冒泡排序(排序算法之一,之后会出一章专门讲排序方法):

冒泡排序优化:

这种优化可以减少冒泡排序的比较次数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值