数组上的指针算术
pointer arithmetic on arrays
当我运行下面的代码时,我的输出不是我所期望的。
我的理解方式是ptr
指向Str
数组第一个元素的地址。我认为ptr + 5
应该导致 + 第 5 个元素,即 f
.因此,输出应仅显示f
,而不是同时显示fg
。
为什么显示fg
?它与cout
显示数组的方式有关吗?
#include <iostream>
using namespace std;
int main()
{
char *ptr;
char Str[] = "abcdefg";
ptr = Str;
ptr += 5;
cout << ptr;
return 0;
}
预期输出:f
实际输出:fg
当您声明:
char Str[] = "abcdefg"
字符串abcdefg
隐式存储,并带有一个额外的字符