指针在数组边界之外

时间:2017-04-10 17:24:40

标签: c++ arrays pointers

我开始学习C ++中的指针,并编写了下面的代码来练习使用它们访问数组中的元素。

using namespace std;
char a[] = {'A', 'B'};  
char* p = a;

cout << "ARRAY IS " << sizeof(a) << " BYTES." << endl;
cout << "CHARACTER IS " << sizeof(a[0]) << " BYTES." << endl;
cout << "THEREFORE LENGTH IS " << (sizeof(a) / sizeof(char)) << " ELEMENTS." << endl << endl;

cout << "INDEX 0: " << *p << endl;
p++;
cout << "INDEX 1: " << *p << endl;
p++;
cout << "INDEX ?: " << *p << endl;
p++;
cout << "INDEX ??: " << *p << endl;

return 0;

据我所知,该数组只有两个元素长,但无论如何都尝试递增指针。

为什么我这样做时,╟字符被打印到控制台?

我使用Visual Studio作为我的IDE。

1 个答案:

答案 0 :(得分:-1)

你碰巧得到那个角色,因为那是p点所存储的东西。但是,下次程序运行时不保证是相同的。

p仍然指向某个地方,超出了分配的数组。在实践中,我敢打赌它指向自己,因为p是在数组之后立即分配的。