我正在尝试创建两个2D数组的数组,如下所示

给定

char twoDArr[2][3] =  {{'a','b','c'},  {'d','e','f'}};


你可以做

char (*twoDArrP)[3] = twoDArr;


在以下位置产生有效结果:

cout << "twoDArr: " << twoDArr[1][2] << endl;
cout << "twoDArrP: " << twoDArrP[1][2] << endl;


我的目标是创建另一个(静态)数组和/或指针,如下所示

char (**threeDArr)[3] = {twoDArr, twoDArr}; //doesn't compile


这样我就可以按以下方式访问其值:

char val = threeDArr[0][1][2];


显然,指数会有所不同

问题是声明3D数组(即2D数组的数组)的正确方法是什么?

我已经搜索了使用此案例的示例,但似乎找不到任何内容。任何帮助,将不胜感激。

最佳答案

你需要

char (*threeDArr[2])[3] = {twoDArr, twoDArr};


对于您的解决方案,“最内层”规范是*而不是数组。

10-07 20:33