0

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

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

}

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

4

2 回答 2

8

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

于 2012-06-06T14:18:56.477 回答
0

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

所以它只是简单地扫描 AlphaChar 数组中是否出现 0。

于 2012-06-06T14:20:06.760 回答