分析一下此题,字符串结束的标志是\0
如果可以使用变量的话,可以像下面这样写代码来实现。
#include<string.h>
int my_strlen(char* s)
{
int count = 0;
while (*s != '\0')
{
count++;
s++;
}
return count;
}
int main()
{
char arr[10] = "abcdef";
//数组名arr是数组首元素地址-char*
int len = my_strlen(arr);
printf("%d\n", len);//结果是6
return 0;
}
可是本题要求,不能创建临时变量,那么我们只能用函数的递归来实现。
#include<string.h>
int my_strlen(char* s)
{
if (*s != '\0')
{
return 1 + my_strlen(s + 1);
}
else
{
return 0;
}
}
int main()
{
char arr[10] = "abcdef";
//数组名arr是数组首元素地址-char*
int len = my_strlen(arr);
printf("%d\n", len);//结果是6
return 0;
}