我有一个问题是可以访问三维数组的第二个位置。 见代码:
int qtdMosquitos = 2500000;
int altura = 500, largura = 500, i, j, k, qtdMosquitoPorCelula = qtdMosquitos /(altura*largura);
long id = 1;
Mosquito* mosquitos[qtdMosquitos][qtdMosquitos][qtdMosquitoPorCelula];
Mosquito* listaMosquitos[qtdMosquitoPorCelula];
for (i = 0; i < altura; i++) {
for (j = 0; j < largura; j++) {
for (k = 0; k < qtdMosquitoPorCelula; k++) {
Mosquito* mosquito = new Mosquito();
mosquito->setId(id);
mosquito->setState("S");
listaMosquitos[k] = mosquito;
}
mosquitos[i][j] = listaMosquitos;
}
}
行mosquitos[i][j] = listaMosquitos;
显示以下错误:
main.cpp|24|error: invalid array assignment|
我理解错误说的是什么,但我找不到原因,我们已经创建了具有相同变量的3D矩阵实例,该变量创建了简单数组变量qtdMosquitoPorCelula
。
你能帮我设置3D阵列的值吗?
如下:matrix[0][1] = arraySimples;
答案 0 :(得分:0)
由于C中的数组是数组第一个元素的指针。因此,代码
mosquitos[i][j] = listaMosquitos;
表示将listaMosquitos[0]
的指针分配给mosquitos[i][j][0]
,这将导致内存问题,编译将禁止它。
在代码示例中,我们可以使用以下代码示例执行相同的操作:
.....
for (i = 0; i < altura; i++) {
for (j = 0; j < largura; j++) {
for (k = 0; k < qtdMosquitoPorCelula; k++) {
Mosquito* mosquito = new Mosquito();
mosquito->setId(id);
mosquito->setState("S");
listaMosquitos[k] = mosquito;
mosquitos[i][j][k] = mosquito;
}
}
}