There is an overload for << which takes a pointer to char and interprets it as a terminated C-style string. Using this for the address of any other char will go horribly wrong.
Instead, convert to a typeless pointer so that << doesn't get too clever:
cout << static_cast(&b)