0

我正在尝试使用嵌套的 for 循环和 new 来编写在堆中创建 3x6x4 3D int 数组(名称为 C)的 C++ 代码。

到目前为止,这是我的代码:

#include <iostream>  
using namespace std;  
//#include "we.hh"

#define X 3
#define Y 6
#define Z 4

int main() {  

  //***<your_code_here>***
  int *** C;
  C = new int**[X * Y * Z];
  int i, j, k;

  for (int i = 0; i < X; i++)
    C[i] = new int*[X]; 

  for (int j = 0; j < Y; j++)
    C[i][j] = new int[Y];

  for (int k = 0; k < Z; k++) 
    C[i][j][k] = new int[Z];      

我在最后一行收到一个错误,指出从 int* 到 int 的无效转换。任何帮助,将不胜感激。

4

2 回答 2

1

您正在使用 C++,所以不要使用原始数组或新数组。

std::array<std::array<std::array, Z>, Y>, X>   C;

完毕。

于 2020-12-02T07:29:31.937 回答
0

你需要嵌套你的循环而不是对它们进行排序,你还有一个太多的循环,并且你在每一级分配了错误数量的指针。像这样

int *** C = new int**[X];
for (int i = 0; i < X; i++)
{
    C[i] = new int*[Y]; 
    for (int j = 0; j < Y; j++)
    {
        C[i][j] = new int[Z];
    }
}
于 2020-12-02T07:32:18.610 回答