今天晚上巍哥出了一个小题目,比较有意思。 

要求:写一个返回字符串长度的函数,函数里面不用局部变量,不能调用系统函数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;
}

Posted on 2010-07-06 21:39  Li Ping  阅读(816)  评论(0编辑  收藏  举报