目录
1.1strlen函数模拟实现
现在回想一下 strlen 函数的功能
strlen函数是一种专门用来测量字符串长度的函数,比如:
使用 strlen函数 就需要使用 <string.h> 的头文件,strlen函数可以测量 '\0' 之前的字符个数
如果没有 '\0' ,strlen在测量字符串个数时就会返回随机值
但今天的重点不是 strlen 函数的使用,而是strlen 函数的模拟实现
我们知道,strlen函数会测量字符串的个数,直到'\0'结束
那么想要实现模拟strlen函数,如上图:我们可以做一个函数,传入数组的首地址,也就是字符串的首地址。
随着地址的不断增加,我们可以不断计数,直到 '\0' 停止计数,最终返回模拟strlen函数中计数的总数
我们可以自定义一个函数my_strlen,并这样实现:
备注:数组名(arr)表示首元素地址(下一章讲)
随着地址的不断增加,计数器count也一直增加,直到 '\0' 停止,最后返回计数器的总数
那么,有没有更简单的方法呢?
我们昨天讲到,指针-指针返回的数的绝对值是两个地址之间元素的个数
如果我们直接用字符串末地址 - 字符串首地址,不就可以得到字符串的个数了
那么,字符串的首地址很容易找到,我们该如何找到字符串的末地址呢?
我们可以将首地址一直进行增加,直到'\0'就停止地址的增加,就可以找到字符串的末地址了
比如:
这样就输出了字符串的元素个数,但是因为指针-指针得到的数的绝对值,是两个指针之前的元素个数,所以输出为-7
如果想通过这样的方式输出7,那就用 末位置-起始位置 即可,比如: