一、strlen的使用
二、模拟实现的三种方法
一(1)strlen的使用:计算字符长度
char *arr = "abc";
printf("%d ", strlen(arr));
/**********
strlen()
参数类型:字符指针
返回类型:unsigned int
**********/
二(1)模拟实现之一
//法1:计算器
int My_strlen(const char* str)
{
int count = 0;
//这个可以加一个断言保证安全
assert(str != NULL);
while (*str != '\0')
{
count++;
str++;
}
return count;
}
二(2)模拟实现之二
//法2:函数递归
int My_strlen(const char* str)
{
if (*str == '\0')
{
return 0;
}
else
{
return 1 + My_strlen(str + 1);//这种没有改变原来的值,比较符合理想
}
//这里有种得注意的写法,顺便复习一下前置++和后置++
//return 1 + My_strlen(str++);//这种写法是后置加加,先使用再++
//也就是说在函数传参时,先使用它,所以传的是地址没有加1的地址,仍然是 之前的
//而且使用后,str的值还变了
// 另外一种写法是前置++:先++,后使用
//return 1+My_strlen(++str);//这种虽然是加了之后再传参,但同理str不是原来的那个值
二(3)模拟实现3
//法3:指针运算
int My_strlen(const char* str)
{
char* p = str;//将函数中传来的赋给指针p
while (*p != '\0')//对 指针p 进行解引用操作,
{ //若不为'\0',则依次向后读取,直到'\0'停止循环。
p++;
}
return p - str;//指针相加减计算的是中间元素的个数
}
如有错误,欢迎帮忙指正
加油,奥利给!!!