1.递归 不创建临时变量
#include<stdio.h>
#include<assert.h>
size_t my_strlen(char * str)
{
if (*str == '\0')
{
return 0;
}
return 1 + my_strlen(str + 1);
2.指针相减
size_t my_strlen(const char *str)
{
assert(str != NULL);
const char *start = str;
while (*str != '\0')
{
str++;
}
return str - start;
}
3.创建临时变量
size_t my_strlen(const char * str)
{
assert(str != NULL);
int count = 0;
while (*str != '\0')
{
str++;
count++;
}
return count;
}
assert是断言,如果指针指向为空则会发出警告。
const 修饰* str ,指针所指向内容不能改变,更加安全。