有些事情困扰着我,我真的无法通过互联网找到任何答案(或者至少我不知道如何搜索它)。我一直认为,在将矩阵的大小声明为 SIZE 时,矩阵的第一个元素是 0,最后一个元素是 SIZE-1。但是,在编译时:
#include<cstdio>
#include<cstdlib>
int main()
{
double *r;
r = new double[10];
double dr=0.1;
for(int i=0;i<=10;i++) r[i]=(double)i*dr;
for(int i=0;i<=10;i++) printf("%lf\n",r[i]);
delete [] r; r=0;
return 0;
}
没有错误通知(到目前为止,我已经用 3 个编译器尝试了这个,gnu、dev 和 c-free),即使我运行 exe 也没有发生错误。结果是:
0.000000
0.100000
0.200000
0.300000
0.400000
0.500000
0.600000
0.700000
0.800000
0.900000
1.000000---> element SIZE, which means 11, while I have declared 10 elements.
所以,问题是:这怎么可能?!?!!?以下是打印地址时的结果:
006E0F88
006E0F90
006E0F98
006E0FA0
006E0FA8
006E0FB0
006E0FB8
006E0FC0
006E0FC8
006E0FD0
006E0FD8---> 11th element
先感谢您。