0

我刚开始学习c ++,我真的不明白,为什么当我cout &d 时,它显示char d 的次数与我已经显示的次数一样多+ 加1 次。所以它在这里显示 3 次字符“d”......对于行
cout << &d << endl;

如果有人能用简单的话解释我为什么,我会感谢他。如果这个问题很愚蠢,我很抱歉。

#include <iostream>
using namespace std;

int main() 
{

char d('d');

cout << d << endl;
cout << d << endl;
cout << &d << endl;


    return 0;   
}
4

1 回答 1

2

那是因为&(在这种情况下)是地址运算符。

编辑:正如@MSalters 所指出的,C++ 标准将此作为未定义的行为,所以任何事情都可能发生,但大多数当前编译器将执行以下操作:

因此,您实际上是在传递指向 to 的char指针cout.operator<<()。这被视为 C 风格的字符串,并将打印该内存地址处的所有内容,直到下一个\0nul 字符。你'd'被你的char初始化放在那里。其余的几乎是随机的,在它之后的内存中。

于 2019-02-04T14:12:33.760 回答