代码之家  ›  专栏  ›  技术社区  ›  wfsu media

解释定义strlen的函数

  •  -3
  • wfsu media  · 技术社区  · 7 年前

    我正在学习c++中的指针。

    我研究并发现了手动函数,它将strlen定义为类似这样的东西。

    int strlen(const char *a){
        const char *b;
        for (b=a;*b;++b);
        return b-a;
    }
    

    有人能用简单的英语解释这段代码吗?特别是,为什么在for循环中将*b设置为终止条件?

    这不是家庭作业的答案。这只是我在研究时提出的一个问题。谢谢

    2 回复  |  直到 7 年前
        1
  •  2
  •   Sergey Kalinichenko    7 年前

    这是一段特别简洁的C代码,带有 for

    这个想法是设置指针 b 到字符串的开头 a '\0' ,表示stirng的结束(即用作空终止符)。在该循环中不需要执行任何其他操作,因此其主体是空的。

    从…起 b

    下面是一种更可读的方法来编写相同的循环:

    for (b=a ; *b != '\0' ; ++b) // Use explicit comparison to zero
        ;                        // Put semicolon on a separate line
    

    当在需要逻辑表达式的语句中使用C表达式时,将应用到零的隐式比较。因此 *b != '\0' 与相同 *b

        2
  •  2
  •   Some programmer dude    7 年前

    以null结尾 那个 空终止符

    循环所做的是迭代到“当前字符”(由 b )等于终止符。