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

时间:2017-01-15 05:58:00

标签: c++ output cout c-strings char-pointer

打印指向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;时,为什么输出中没有垃圾数据?

1 个答案:

答案 0 :(得分:2)

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

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