首先我们先来看看不使用strlen函数,我们自己怎么求字符串长度呢
int my_strlen(char* str)//所以这里用一个字符型指针作为形参
{
int count = 0;//创建一个count用于计数
while (*str != '\0')
{
str++;
count++;
}
return count;
}
int main()
{
char str[] = "abcdef";//创建一个字符数组
printf("该字符长度为%d\n", my_strlen(str)); //这里一定要注意,数组传参,实参arr表示的是首元素地址,不代表整个数组
return 0;
}
但是这个程序里我们是创建了一个临时变量count的,
所以不符合要求
我们从递归的角度出发
my_strlen(“abcedf”)
= my_strlen(“bcdef”)+1
= my_strlen(“cdef”)+1+1 = my_strlen(“def”)+1+1+1 以此类推
所以代码就如下所示
int my_strlen(char* str)
{
if (*str != '\0')//递归的条件
{
return 1 + my_strlen(str + 1);
}
else
{
return 0;//str指向‘\0’,时u,证明字符串已经结束了,递归开始返回。
}
}
int main()
{
char str[] = "abcdef";//创建一个字符数组
printf("该字符长度为%d\n", my_strlen(str)); //这里一定要注意,数组传参,实参arr表示的是首元素地址,不代表整个数组
return 0;
}