&a[0] gives type char* . This is the type for which operator<<() overloaded. This particular overload prints characters starting with an address until it finds a null character, '\0' . It will not print the address as you expected.
Since you need an address, there is std::addressof() in the standard library:
std::cout << std::addressof(a[0]);
you can also use void* , which is almost similar to the above option:
std::cout << static_cast<void*>(&a[0]);
0x499602D2
source share