练习
编写函数不允许创建临时变量,求字符串长度
#incude <stdio.h>
int Strlen(const char*str)
{
if(*str == '\0')
return 0;
else
return 1+Strlen(str+1);
}
int main()
{
char *p = "abcdef";
int len = Strlen(p);
printf("%d\n", len);
return 0;
}
首先我们定义指针变量 *p 然后随便给一个字符串(之前我们说过arr[]的本质其实就是字符串第一个值的地址,所以也可以写成*p)
之后我们定义一个变量 len ,再把strlen函数求出的值赋值给 len ,最后打印 len
之后我们来编写函数 strlen ,因为题目要求不能定义变量,所以利用递归完成
首先我们利用 if else 语句,如果 *str 等于 \0,我们就返回,当 *str 不等于 \0 时,我们就执行 return 1+Strlen(str+1)
这个 return 1+Strlen(str+1) 是什么意思呢?
当我们把字符串传给 stelen 函数时,首先我们判断 *str是否等于\0,a不等于\0,所以执行return 1+Strlen(str+1),这时我们再一次调用了strlen 函数 ,所以我们