现在我们有这样的一串代码
#include <string.h>
int main()
{
char arr[] = "abcdef";
size_t len = strlen(arr);//在这里数组名是数组首元素的地址
printf("%zd", len);
return 0;
}
方法一:
size_t my_strlen(char* p)
{
size_t count = 0;//因为是模拟实现,strlen的返回值是size_t,所以我们也要用size_t
while(*p != '\0')
{
count++;
p++;
}
return count;
}
int main()
{
char arr[] = "abcdef";
size_t len = my_strlen(arr);
printf("%zd", len);
return 0;
}
方法二:
我们用到指针减去指针
size_t my_strlen(char* p)
{
char* pp = p;//pp目标是\0的指针
while (*pp != '\0')
{
pp++;
}
return pp - p;
}
int main()
{
char arr[] = "abcdef";
size_t len = my_strlen(arr);
printf("%zd", len);
return 0;
}