Если вы хотите вывести адрес переменной a
, напишите
char a = 'Z';
cout << a << static_cast<void *>( &a );
В противном случае компилятор попытается вывести строку, на которую указывает выражение &a
, которая имеет тип char *
пока не встретится завершающий ноль символ.
Таким образом, этот вывод
cout << &a;
имеет неопределенное поведение.
Если вы хотите вывести переменную a в виде массива, имеющегоЗатем нужно объявить массив вместо скалярной переменной и инициализировать его строковым литералом вместо символьного литерала. Например
char a[] = "Z";
cout << *a << &a;