这种情况如何成立

How does this condition hold

本文关键字:何成立 情况      更新时间:2023-10-16

我有以下函数,它是Trie结构实现的一部分:

int alpha_char_strlen (const AlphaChar *str) {
    const AlphaChar *p;
    for (p = str; *p; p++) ;
    return p - str;

}

任何人都可以帮助我解释一下 for 循环的条件是如何成立的,以及在这种情况下的条件究竟是什么?
注意:AlphaChar 只是一个具有无符号 int 类型的 typedef,该函数计算 AlphaChar 字符。

条件*p*p != 0相同(如果*p是基元类型)。也就是说,您不断递增指针p,直到它指向零。换句话说,您将str视为指向以零结尾的数组的指针。

条件是 *p ,是 *p!=0 的缩写。

因此,它只是扫描 AlphaChar 数组以查找出现次数为 0。