1.计数器
#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char* a)
{
assert(a);
size_t res = 0;
while (*a != '\0')
{
a++;
res++;
}
return res;
}
int main()
{
char arr[] = "hello,world!";
int res=my_strlen(arr);
printf("%d\n", res);
}
2.指针-指针
#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char* a)
{
assert(a);
char* b = a;
while (*a != '\0')
{
a++;
}
return a - b;
}
int main()
{
char arr[] = "hello,world!";
int res = my_strlen(arr);
printf("%d\n", res);
return 0;
}
3.递归
#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char* a)
{
assert(a);
while (*a != '\0')
{
return 1+my_strlen(a + 1);
}
}
int main()
{
char arr[] = "hello,world!";//12
int res = my_strlen(arr);
printf("%d\n", res);
return 0;
}
my_strlen(a+1)的作用是每次进去之后a都会向后移动一个char型的字符,直到当它指向\0时,‘递’这个动作结束,开始‘归’。