gpt4 book ai didi

c++ - 指向 char 数组的指针的索引

转载 作者:行者123 更新时间:2023-11-27 23:02:10 25 4
gpt4 key购买 nike

我试图找出为什么以下程序的输出是“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 <<将其解释为空终止字符串。这意味着程序将在第一次迭代时输出“WHAN”(i == 0 所以p + i == p,与a 相同),第二次迭代时输出“A”,第三次迭代时输出“HN”,第三次迭代时输出“N” "最后一个。

关于c++ - 指向 char 数组的指针的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26674777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com