2 the dream of rookie The_Dream_of_Rookie 于 2016.03.22 14:25 提问

为什么new没有申请到那个位置的内存还可以访问那个位置的值 1C

#include
using namespace std;

int main(void)
{
float *x = new float[10];
for(int i=0;i!=10;++i)
x[i] = i;
cout << "the 1st element is " << x[0] << endl;
cout << "the 12st element is " << x[12] << endl;
double a;
a = x[0] + x[12];
cout << a << endl;

return 0;

}

2个回答

bdmh
bdmh   Ds   Rxr 2016.03.22 14:38

x[12],依然会按起始地址加12偏移,只要那个位置有内容就会读出来,不出错也是你赶巧了

GeekMoore
GeekMoore   2016.03.22 18:24

只能说好危险啊 。你让指针移动起来,可以访问任何一个地方(堆)的内容的。切记不要更改指针上的内容。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!