在打印一个指向 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;
?
注意:我不希望从 cout 获得 q 的地址。我期望得到 &q 指向的 C 字符串。让我烦恼的是,如果我cout << "&i: " << &i << endl;
事先包含该行,输出将如何打印“q”。但是,如果我将该行注释掉,则输出中有垃圾数据。当我包含该行时,为什么我的输出中没有垃圾数据cout << "&i: " << &i << endl;
?