#include <stdio.h>

int main( void )
{
char *p1, *p2;
p1 = p2 = "Winter";

while ( *p1 ) {
++p1;
}
while ( p1 > p2 ) {
--p1;
putchar( *p1 );
}
putchar( '\n' );

return 0;
}
これは、文字を逆さにして、出力するプログラムです。実行結果は "retniW"です。

ここで質問ですが、while ( p1 > p2 )の意味がわかりません。 
p1とp2は違う変数なのに、同じアドレスを使っていると考えられます。
つまり、
*p1の最初の文字(=W)アドレスが100番地だとしたら、*p2の最初の文字のアドレスはそれ以外であると考えます。

私は何か検討違いをしているのでしょうか?