0

トライ構造の実装の一部である次の関数があります。

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*ppstr

于 2012-06-06T14:18:56.477 に答える
0

状態は*p、の略です*p!=0

そのため、AlphaChar 配列をスキャンして 0 の出現を探すだけです。

于 2012-06-06T14:20:06.760 に答える