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

标签 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]) ;

让我很困惑。谁能解释一下它的作用吗?

最佳答案

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

关于c - `return 1 + strlen_rec(&arr[1]) ;`是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40860828/

相关文章:

python - Swig,返回 double 数组

xml - 如何在 Zend Framework 应用程序中返回 XML

c - 结构..有人能弄清楚吗?

使用 Emscripten 编译 Nim 和 SDL2 Image 时出现类型冲突

c - 原子位测试和设置 (BTS) 的内在汇编

java - 处理 FileNotFoundException

javascript - 从 JavaScript 函数返回值

C语言如何在递归函数中打印到文件而不覆盖它?

c - 在linux内核的task_struct中添加复杂列表

java - 从一个方法返回多次?