模拟实现 strlen 的三种方式. 以及和sizeof 的区别。

首先,一定要注意区分 sizeof 和 strlen !  

sizeof是操作符(关键字),strlen是函数。 

strlen(char*)
函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个’\0’。.
strlen的结果要在运行的才能计算出来,是用来计算字符串的长度,不是类型占内存的大小。
sizeof()
返回的是变量声明后所占的内存数,不是实际长度。
 

char str[20]="0123456789"; 

  int a=strlen(str); //a=10; 

  int b=sizeof(str); //而b=20; 

模拟实现 strlen 函数 的三种方式。

计数器方式


int my_strlen(const char *str)
{
    int count = 0;
    while(*str)    //当它不等于  ‘\0’ 的时候 执行循环
    {
        count++;
        str++;
    }
    return count;
}

递归方式

int my_strlen(const char *str)
{
    if(*str =='\0')
    {
        return 0;
    }
    else
        return 1+ my_strlen(str+1);
}

指针方式

int my_strlen(char *p)
{
    char *q = p;
    while(*q != '\0')
    {
        q++;
    }
    return q-p;

}
int main()
{
    char arr[] = "abcdefg";
    int len = my_strlen(arr);

    printf("%d\n",len);

    system("pause");
    return 0;
}

运行结果:

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_41420688/article/details/80285209