После печати указателя на int я печатаю указатель на char:
#include <iostream>
using namespace std;
int main() {
int i;
cout << "&i: " << &i << endl;
char q = 'q';
cout << "&q: " << &q << endl;
return 0;
}
Я получаю следующий вывод, как и ожидалось:
&i: 0xffffcc0c
&q: q
Однако, если я закомментирую cout << "&i: " << &i << endl;
и снова запущу программу, я получу следующий необъяснимый вывод:
&q: q����
Кто-нибудь знает, почему это происходит?
Если это связано с вставкой operator<<
в поток до тех пор, пока не будет найден нулевой символ, то почему я получаю ожидаемый результат, когда включаю cout << "&i: " << &i << endl;
?
ПРИМЕЧАНИЕ: я не ожидаю получить адрес q от cout. Я ожидаю получить строку C, на которую указывает &q. Что меня беспокоит, так это то, что вывод просто печатает «q», если я заранее включаю строку cout << "&i: " << &i << endl;
. Однако, если я закомментирую эту строку, на выходе будут данные мусора. Почему в моем выводе нет мусорных данных, когда я включаю строку cout << "&i: " << &i << endl;
?