我一直在使用c ++,并且出于某种原因,每次遇到在循环中访问的数组时,它都会一直给我这个错误消息,例如:
int i2 = 0;
for(int n=0; n<sizeof(mapy); n++)
{
xybar[i2] = mapx[n] * mapy[n];//
xbar_squared[i2] = mapx[n] * mapx[n];//
i2++;
}
Run Code Online (Sandbox Code Playgroud)
i2因为我意识到它不需要的原因是因为当我检查这些值时,我意识到迭代器n已经被替换为值2006而不是数组中的位置导致它在下一次调用时失败,因为它由于我的数组只包含500个数据,因此超出范围.我认为i2可能会解决这个问题,但事实并非如此.
在此,我假设你的数组不是指针,例如,他们是sometype mapy[size]不sometype *mapy.在这种情况下,sizeof运算符mapy以字节为单位返回整个数组的大小,而不是元素的数量.如果阵列是任何类型的,其大于1个字节(例如int,float,double等),则该代码将访问过去阵列并因此访问冲突异常的结束.您可以使用sizeof(mapy)/sizeof(mapy[0])相反来获取数组元素的数量.