【发布时间】:2016-04-01 16:52:17
【问题描述】:
我遇到了一个 c++ 代码:
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
cout << "Greeting message: ";
cout << greeting << endl;
输出:Hello
由于问候语是一个大小为 6 的数组,因此显示问候语应仅显示“H”,因为 cout 中的 greeting[0],因为它显示的是数组的第一个地址。我不知道我错在哪里。
【问题讨论】:
-
请说明为什么您希望它只显示“H”。您正在打印
greeting而不是greeting[0] -
greeting衰减成一个指针char *并且它指向的整个字符串将被打印出来。如果您只想打印第一个字符,请使用cout << greeting[0] << endl;。 -
这是 cout 显示字符串的方式...因为 greeting 是一个字符串,这就是 cout 显示 "Hello" 但如果你写 "greeting[0]" 那么 cout 将显示 'H' 作为字符...
-
operator <<的char *类型被重载以从给定地址开始并打印字符,直到找到\0。 -
问候不是代表数组的第一个值吗?