指向字符数组的指针的索引
Index of pointer to a char array
我正在努力找出以下程序的输出为"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"。
相关文章:
- 当该数组的索引中没有元素时,指针指向什么?
- 通过指针与数组引用扩展数组索引序列
- C++ STL 数据结构常时按索引推送/弹出/随机访问,并具有指向元素的可靠指针
- 矢量指针索引处的读取元素
- 通过在编译时折叠带有索引的指针来分配 C 数组
- C++娜娜 如何从全局列表框*指针访问列表框内的索引 0 上的按钮?
- 是否可以创建带有索引但没有指针的单个链表?
- 创建一个没有指针但有索引的链表
- 运行时错误:基0x000000000000溢出到0xffffffffffffffff的指针索引表达式 (basic_st
- 如何查找指向数组中元素的指针的索引
- 如何使用 C+ 中的指针访问数组中的特定索引
- 从指针数组中的地址索引
- 混合索引和指针算术时避免使用C4365,而无需铸造
- 如何在指针初始化为数组的第一个索引后释放指针
- 基于索引的 alloca 返回的指针访问和"placement new"的效果
- 是否可以使用一系列智能指针来自动通过其索引更新其值
- 指针数组总是从索引C 生成一个
- 将指针分配给字符串对象的第一个也是最后一个索引
- 为对象指针数组的每个空索引创建新对象
- 试图通过指针索引对象数组的数组时出现分段错误