我已经下载了一个代码,它看起来是正确的(并运行):
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?
答案 0 :(得分:2)
int (*oldMatrix)[NJ] = new int[NI][NJ];
[NJ]
并未声明其长度,而是 type 声明的一部分。 oldMatrix
是指向长度为NJ
的数组的指针,该数组设置为指向长度为NI
个数组的动态数组。
它相当于
typedef int row_type[NJ];
row_type *oldMatrix = new row_type[NI];
编辑:经过测试
答案 1 :(得分:1)
因为NI表示没有行,NJ表示没有列。
NJ
a1 a2 a3 a4
NI b1 b2 b3 b4
c1 c2 c4 c4
d1 d2 d3 d4