指向字符数组的指针的索引

Index of pointer to a char array

本文关键字:指针 索引 数组 字符      更新时间:2023-10-16

我正在努力找出以下程序的输出为"WAHNAHNN"的原因。

我的问题是:为什么索引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;
}

p + i的类型为char*

operator <<将其解释为以null结尾的字符串。这意味着程序将为第一次迭代输出"WHAN"(i == 0因此p + i == p,wich与a相同),为第二次迭代输出为"A",为第三次迭代输入为"HN",为最后一次输出为"N"。