当前位置: 首页 > news >正文

strlen函数模拟实现——深入理解指针(3)

eec91d6c25234e4a8657fe54a1c5057c.png

目录:

1.1strlen函数模拟实现


现在回想一下 strlen 函数的功能

strlen函数是一种专门用来测量字符串长度的函数,比如:

f245abf015a24718b1261a56c3d1d92c.png

使用 strlen函数 就需要使用 <string.h> 的头文件,strlen函数可以测量 '\0' 之前的字符个数

如果没有 '\0' ,strlen在测量字符串个数时就会返回随机值

但今天的重点不是 strlen 函数的使用,而是strlen 函数的模拟实现

我们知道,strlen函数会测量字符串的个数,直到'\0'结束


那么想要实现模拟strlen函数,如上图:我们可以做一个函数,传入数组的首地址,也就是字符串的首地址。

随着地址的不断增加,我们可以不断计数,直到 '\0' 停止计数,最终返回模拟strlen函数中计数的总数

我们可以自定义一个函数my_strlen,并这样实现:

d80a5b12d7de4344abc832b898bd9976.png

备注:数组名(arr)表示首元素地址(下一章讲)

随着地址的不断增加,计数器count也一直增加,直到 '\0' 停止,最后返回计数器的总数

那么,有没有更简单的方法呢?


我们昨天讲到,指针-指针返回的数的绝对值是两个地址之间元素的个数

如果我们直接用字符串末地址 - 字符串首地址,不就可以得到字符串的个数了

那么,字符串的首地址很容易找到,我们该如何找到字符串的末地址呢?

我们可以将首地址一直进行增加,直到'\0'就停止地址的增加,就可以找到字符串的末地址了

比如:

4e5dd28e730e46aba74f58fffbd22170.png

这样就输出了字符串的元素个数,但是因为指针-指针得到的数的绝对值,是两个指针之前的元素个数,所以输出为-7

如果想通过这样的方式输出7,那就用 末位置-起始位置 即可,比如:

1ad158109c53413688e8bf793ae00101.png

0a751dbde74d441b840b954af6f826f4.png

 

 


http://www.mrgr.cn/news/11899.html

相关文章:

  • clickhouse 原理详解
  • 【什么是python?】
  • 分治,CF 1237C2 - Balanced Removals (Harder)
  • spring 声明式事务方法自调用问题
  • Excel技能分享:不同sheet间根据值匹配进行赋值
  • @JsonFormat和@JSONField分别的使用场景
  • 年轻人喝不起蜜雪冰城了
  • 英特尔终止开发开源 H.265/HEVC 编码器项目
  • 【Java日志系列】Log4j2日志框架
  • 蓝奥声4G系列新突破:4G+RS485+蓝牙+WiFi+以太网综合智能网关,多元智控!
  • 事件相关介绍
  • SQL进阶技巧:如何按任意时段分析时间区间问题? | 分区间讨论【左、中、右】
  • 万邑通信息科技笔试题库:北森测评言语数字图形真题答题要求及真题分享
  • 学习大数据DAY44 帆软 report 配置
  • (转载)使用zed相机录制视频
  • VLDB 2024 即将来袭!创邻科技将带来精彩分享
  • 【C语言】深入理解指针3(附转移表源码)
  • 外包干了两年,快要废了。。。
  • SE11 没有激活的名称表存 No active nametab exists for
  • SQL 优化实践:从慢查询到高性能更新