C++:带有cout和指向char的指针的无法解释的行为

C++: Unexplainable behavior with cout and pointer to char

本文关键字:指针 无法解释 char 带有 cout C++      更新时间:2023-10-16

打印指向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.让我感到困扰的是,如果我事先包含行cout << "&i: " << &i << endl;,输出如何只打印"q"。但是,如果我对这一行进行注释,那么输出中就会有垃圾数据。当我包含行cout << "&i: " << &i << endl;时,为什么我的输出中没有垃圾数据?

&q认为它是一个字符串。

因此将打印到空字符。因此额外的输出