Возможный дубликат:
Почему адрес данных char не отображается?
Я экспериментировал с оператором амперсанда и застрял в этой программе:
#include<iostream>
using namespace std;
int main() {
char i='a';
cout<<&i;
return 1;
}
Я ожидал адрес переменной я в качестве выхода, но вместо этого выход пришел как значение переменной i сам.
Кто-нибудь может объяснить, что только что произошло? Спасибо заранее.
Это потому что cout::operator<<
имеет перегрузку для const char*
, Вам понадобится явное приведение, чтобы напечатать адрес:
cout<<static_cast<void*>(&i);
Это вызовет перегрузку с void*
в качестве параметра, который используется для печати адресов.
Также обратите внимание, что ваш код имеет неопределенное поведение. У вас там только один символ, и перегрузка ожидает C-строку с нулевым символом в конце.
Других решений пока нет …