Для символа d я получаю странный вывод при выполнении cout << &d
Я только начал изучать C++, и я не очень понимаю, почему, когда я cout &d, он показывает char d столько раз, сколько я его уже показал + добавить 1 раз. Так что он показывает 3 раза символ "d" здесь... для строки
cout << &d << endl;
если кто-то может объяснить мне, почему, с простым словом, я бы поблагодарил его. И мне жаль, если вопрос глупый.
#include <iostream>
using namespace std;
int main()
{
char d('d');
cout << d << endl;
cout << d << endl;
cout << &d << endl;
return 0;
}
1 ответ
Это потому что &
(в этом контексте) является адресом оператора.
РЕДАКТИРОВАТЬ: Как отметил @MSalters, стандарт C++ имеет это как неопределенное поведение, поэтому может произойти все что угодно, но большинство современных компиляторов будут делать следующее:
Таким образом, вы фактически передаете указатель на char
в cout.operator<<()
, Это рассматривается как строка в стиле C и будет печатать все по этому адресу памяти до следующего \0
нуль чар. Ваш 'd'
ставится там вашим char
инициализация. Остальное в значительной степени случайно, что в памяти после него.