On line 2: both are pointer to the first element, so they're equal.
The reason why the string and not the address appears in the output lies in the nature of the stream (respectively the operator<<). if you provide a certain type (like const char*) it knows what to do: output the string (it assumes that the address points to a 0 terminated string).
if you write that:
cout << endl << (void *) terry;
the stream doesn't know anymore what to do with the data and prints the address.