0
我想知道为什么以下程序的输出是“WAHNAHNN”。指向char数组的指针
我的问题是: 为什么索引i超过p [4](即超过数组的长度),为什么在“WAHN”之后会产生另一个“AHNN”?
我仍然与p + i(应该是位置)和*(p + i)之间的差异混淆,这应该是一个值。为什么在两种情况下输出都是一个值?
#include <iostream>
using namespace std;
int main()
{
char a[] = "WAHN";
char *p = a;
for (int i=0; p[i]; i=i+1)
switch (i%2) {
case 0: cout << p+i;
break;
case 1: cout << *(p+i);
break;
}
return 0;
}
原因是'ostream'上的'operator <<'重载了'char *'[你可以在文档中看到](http://www.cplusplus.com/reference/ostream/ostream/免运营商/) – PeterT 2014-10-31 12:38:51
很难理解你的困惑。 i = 0打印字符串“WAHN”,i = 1打印字符“A”,i = 2打印字符串“HN”,i = 3打印字符“N”,那么它就是你的代码。 – mpromonet 2014-10-31 12:40:04
@mpromonet请不要将C标签添加到包含C++代码的问题。 – Lundin 2014-10-31 15:01:59