我开始学习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。
答案 0 :(得分:-1)
你碰巧得到那个角色,因为那是p
点所存储的东西。但是,下次程序运行时不保证是相同的。
p
仍然指向某个地方,超出了分配的数组。在实践中,我敢打赌它指向自己,因为p
是在数组之后立即分配的。