今天晚上巍哥出了一个小题目,比较有意思。
要求:写一个返回字符串长度的函数,函数里面不用局部变量,不能调用系统函数strlen。
思想:用递归的想法。
#include "stdio.h"
int strlen_test(char * ch)
{
if (ch[0]=='\0')
{
return 0;
} else{
return(1+strlen_test(++ch));//地址传递。
}
}
int main()
{
char a[100]="help help help" ;
printf("%d",strlen_test(a));
printf("\n%d\n",strlen(a));
return 0;
}
运行结果:
14
14
Press any key to continue
/****************************************/
#include "stdio.h"
int strlen_test(char * ch)
{
if (ch[0]=='\0')
{
return 0;
}
else{
printf("%c",ch[0]);
return(strlen_test(ch++));//程序陷入死循环,因为函数先调用ch,然后ch指针才++,实际是形参ch一直得不到改变。
}
}
int main()
{
char a[100]="help help help" ;
printf("%d",strlen_test(a));
printf("\n%d\n",strlen(a));
return 0;
}