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