我有 3 个数组,A[5][3][5]
,B[5][4][5]
,C[5 ][2][5]
。
是否可以通过指针数组访问它们,而它们的第二维不同?像这样的东西:
int A[5][3][5], B[5][4][5], C[5][2][5];
int ***D[3];
D[0] = A;
D[1] = B;
D[2] = C;
我知道这是错误的,我只是想知道是否可以通过一个数组访问它们?
最佳答案
不,如果第二个维度不同,它将无法工作。你能做的最好的事情是这样的:
struct arr {
int *p; // pointer to first element
int x, y, z; // array size
int &at(int i, int j, int k) {
return p[((i*y)+j)*z+k];
}
}
或者您可以使用您喜欢的多维数组库。 C++ 缺乏对多维数组的内置支持,除非在编译时已知除第一个大小之外的所有数组,并且 C99 VLA 在这种情况下不起作用。这是因为C/C++使用数组的类型来计算它在每个维度中有多大(除了第一个维度,它可以是未指定的)。
关于c++ - 是否可以创建 3d 数组的指针数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23661327/