打印指向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的地址。我希望得到&amp; q指向的C字符串。如果我事先包含行cout << "&i: " << &i << endl;
,那么输出只是打印'q'是什么让我烦恼的。但是,如果我对该行进行注释,则输出中会有垃圾数据。当我包含行cout << "&i: " << &i << endl;
时,为什么输出中没有垃圾数据?
答案 0 :(得分:2)
位&q
认为它是一个字符串。
因此会打印到空字符。因此额外的输出