for (p = s.end( ); p != s.begin( ) && *--p == c;);

こんなコードみかけたんだけど
for文ってfor(xxx; xxx; xxx)
みたいに()の中は三つ項目がいるんじゃなかったの?
上記のコードが何をしているか説明して下さい