这种情况如何?

时间:2012-06-06 14:15:09

标签: c++ pointers

我有以下函数,它是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字符。

2 个答案:

答案 0 :(得分:8)

条件*p*p != 0相同(如果*p是基本类型)。也就是说,你继续递增指针p,直到它指向零。换句话说,您将str视为指向零终止数组的指针。

答案 1 :(得分:0)

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

因此它只是扫描AlphaChar数组的出现次数为0.