我有一些代码:
int strlen_rec(char arr[])
{
if(arr[0]=='\0')
return 0;
else
return 1 + strlen_rec(&arr[1]) ;
}
该行
return 1 + strlen_rec(&arr[1]) ;
令我困惑。有人可以解释它的作用吗?
答案 0 :(得分:1)
此函数使用递归计算字符串的长度。它可能看起来很混乱,因为它使用像指针一样的数组。 &ar[1]
正在增加指针(使用下一个字节的地址调用该函数)。 C字符串以空字节终止,该字节不包含在长度中,因此在到达时返回0。