我已经下载了代码,它看起来是正确的(和运行):此代码是如何正确的?
int (*oldMatrix)[NJ] = new int[NI][NJ];
int (*newMatrix)[NJ] = new int[NI][NJ];
/* initialize elements of old to 0 or 1 */
for (i=1; i<=NI; i++) {
for (j=1; j<=NJ; j++) {
x = rand()/((float)RAND_MAX + 1);
if(x<0.5) {
oldMatrix[i][j] = 0;
} else {
oldMatrix[i][j] = 1;
}
}
}
什么我不明白:为什么oldMatrix和大小NI的newMatrix,而不是大小NJ的?
您使用哪种语言? – summea
C++。我认为代码的创建者犯了一个错误,我们不应该只写int ** oldMatrix = new int [NI] [NJ]; int ** newMatrix = new int [NI] [NJ]; ? – user3346223
还有一个严重错误:C++中的数组索引是从零开始的。对于大小为“NI”的数组,访问元素“NI”肯定是一个错误。 (为了比较,只要'NI> = 1',访问'NI-1'就不会有问题。) – rwong