#include<stdio.h>
int strlen(char *p) {
if(p == NULL) {
return 0;
}
else if(*p == 0) {
return 0;
}
else {
return 1 + strlen(p+1);
}
}
int main(void) {
char a[] = "fhgfdgc";
int len;
len = strlen(a);
printf("%d\n",len);
return 0;
}
主要就是递归的思想。最后如果是return 1 + strlen(p++)程序陷入死循环,因为函数先调用p,然后p指针才++,实际是形参p一直得不到改变。