如何在位置2 c ++中访问三维数组

时间:2017-01-20 00:59:37

标签: c++

我有一个问题是可以访问三维数组的第二个位置。 见代码:

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;

1 个答案:

答案 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;
        }
    }
}