我开始学习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;
我明白,数组只有两个元素长,但试图增加指针。
当我这样做the字符打印到控制台时该怎么办?
我使用Visual Studio作为我的IDE。
你的程序的行为是未定义的 - 它可以打印任何东西,或者什么也不打印,或者完全执行其他操作。 –
访问数组越界是未定义的行为。这意味着任何事情都可能发生:崩溃,垃圾等等。 – crashmstr