c语言,指针那一块,关于重新编写strlen函数

为什么这个strlen函数可以计算 "hello world"?工作原理是什么?谢谢啦

为什么这个函数可以计算"hello world"?工作原理是什么?

int strlen(char *psz)
{
if(psz==NULL) return 0;
for(int i=0;psz[i]!='\0';++i);
return i;
}

int strlen(const char * str)
{
if(str == NULL)
return -1;
int i = 0;
while(*str++)
{
i++;
}
return i;
}

"hello world"是一个字符串,字符串传值默认传首地址,strlen函数的形参就是指针

strlen函数的意思是:如果指针为空的话返回0(就是你没传入字符串),然后执行循环,在字符串值为'\0'(合法的字符串都是以'\0'结束的)时停止循环,返回值是循环次数。不知道你理解了没

strlen计算方法就是根据传入的字符指针,循环自增,知道遇见结束符'\0',所以strlen正常工作的前提是传入的必须是一个C风格的字符串(以'\0'结尾的字符数组)