我已经下载了一个代码,它看起来正确(并且可以运行):
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和newMatrix的大小为NI,而大小为NJ?
最佳答案
int (*oldMatrix)[NJ] = new int[NI][NJ];
[NJ]
并未声明其长度,而是其类型声明的一部分。 oldMatrix
是指向长度为NJ
的数组的指针,该指针设置为指向长度为NI
的动态数组。相当于
typedef int row_type[NJ];
row_type *oldMatrix = new row_type[NI];
编辑:经过测试
关于c++ - 该代码如何正确?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22752677/