代码如下,我定义的数组长度是3, 为什么我可以在for循环中无错误地访问p[3]呢?不应该最多访问到p[2]吗?
也就是说,越界1位不会报错,但是超过1位就会报错了。
求大佬解释。
#include<iostream>
using namespace std;
int main(int argc, char *argv[])
{
int* p[3];
p[0] = new int(0);
p[1] = new int(1);
p[2] = new int(2);
p[3] = new int(3); // 为什么不会报越界错误?而且后面访问p[3]也不会报错。
//p[1000] = new int(888); // 也不会报错,但是如果访问就会报错。
for (int i = 0; i < 4; i++) {
cout << *(p[i]) << endl;
}
return 0;
}
上面代码输出:
0
1
2
3
求解释!
为什么p[3]不会越界,而p[4]就会越界?