为什么这个函数可以计算"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'结尾的字符数组)