3

在打印一个指向 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;

4

1 回答 1

2

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

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

于 2017-01-15T06:01:08.143 回答