How does this condition hold
I have the following function which is part of the Trie structure implementation:  

    int alpha_char_strlen (const AlphaChar *str) {
        const AlphaChar *p;
        for (p = str; *p; p++) ;
        return p - str;
}
  
Can any one help me and explain how does the condition for the for loop hold, and precisely what is the condition in this case?  
Note: AlphaChar is simply a typedef with unsigned int type and the function counts the AlphaChar characters.
How does this condition hold
===

I have the following function which is part of the Trie structure implementation:  

    int alpha_char_strlen (const AlphaChar *str) {
        const AlphaChar *p;
        for (p = str; *p; p++) ;
        return p - str;
}
  
Can any one help me and explain how does the condition for the for loop hold, and precisely what is the condition in this case?  
Note: AlphaChar is simply a typedef with unsigned int type and the function counts the AlphaChar characters.