int *i = new int(1);
cout << i << endl;
整数のアドレスを出力します。
char *c="cstring";
cout << c << endl;
cout << &(*c) << endl;
両方とも「cstring」を出力します。ostream& operator<< (ostream& out, const char* s );
この動作は、IOstreamライブラリの実装で簡単に説明できると思います。
しかし、cが参照するデータのアドレスを実際に出力したい場合はどうすればよいでしょうか。