首先,一定要注意区分 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;
}
运行结果: