Использование & amp; оператор с типом данных char

Возможный дубликат:
Почему адрес данных char не отображается?

Я экспериментировал с оператором амперсанда и застрял в этой программе:

#include<iostream>
using namespace std;

int main() {
char i='a';
cout<<&i;
return 1;
}

Я ожидал адрес переменной я в качестве выхода, но вместо этого выход пришел как значение переменной i сам.

Кто-нибудь может объяснить, что только что произошло? Спасибо заранее.

-1

Решение

Это потому что cout::operator<< имеет перегрузку для const char*, Вам понадобится явное приведение, чтобы напечатать адрес:

cout<<static_cast<void*>(&i);

Это вызовет перегрузку с void* в качестве параметра, который используется для печати адресов.

Также обратите внимание, что ваш код имеет неопределенное поведение. У вас там только один символ, и перегрузка ожидает C-строку с нулевым символом в конце.

4

Другие решения

Других решений пока нет …