`return 1 + strlen_rec(& arr [1])是什么意思?

时间:2016-11-29 08:16:39

标签: c return

我有一些代码:

int strlen_rec(char arr[])
{

    if(arr[0]=='\0')
        return 0;
    else
        return 1 + strlen_rec(&arr[1]) ;
}

该行

return 1 + strlen_rec(&arr[1]) ;

令我困惑。有人可以解释它的作用吗?

1 个答案:

答案 0 :(得分:1)

此函数使用递归计算字符串的长度。它可能看起来很混乱,因为它使用像指针一样的数组。 &ar[1]正在增加指针(使用下一个字节的地址调用该函数)。 C字符串以空字节终止,该字节不包含在长度中,因此在到达时返回0。