Well, when you feed a char* to std::cout, it thinks it should print a C string.
1 2 3 4 5 6 7 8 9
#include <iostream>
int main()
{
constchar *cp = "Hello, World!";
std::clog << cp << '\n'; // what should this print?
std::clog << static_cast<constvoid *> (cp) << '\n';
}
Hello, World!
0x48f064
Traditionally... that means, back in the good old C whence C++ originated... char[] (char arrays) were used as text strings. And arrays decay to pointers. So printing a char* is a special case.
You can get around this as shown above, by using a cast.