That is the way it works with char*.
If you want to print the address you have to cast it to some other type of pointer - casting
as a pointer to void is the method most people use. cout << "pName: " << (void*)pName << endl;
Part of this is appears to be that you do not quite understand pointers.
pName is a pointer (in this case it is a pointer to char) - so *pName is the object being
pointed to by the pointer - and this is the C character.
so cout << *pName will only print C.
When you do - cout << pName - you are passing the pointer itself. And cin will print out the whole string. In other words it would do cout << *pName, then cout << *(pName+1), until it has stepped through the whole string.