将3维指针的第一个地址转换为单维指针的问题?

时间:2011-04-16 11:32:35

标签: c++ multidimensional-array

可以将单维数组指向三维数组的第一个地址, 例如    int *array; int ***array3D; array=*array3D; 我需要第一个数组指向第二个数组的第一个地址。 我只需要指针的第一个地址。任何人都可以建议任何替代指向起始地址?提前谢谢。

1 个答案:

答案 0 :(得分:0)

当你处理2D和3D图像时,这种事情总是发生。

你写的(array = *array3D)显然不会编译,因为类型不匹配。 array3D**int,数组是*int

如果你array3D设置正确,那么(例如):

int ***array3D = new int **[zsize];
for(int z = 0 ; z < zsize ; ++z)     
{
    array3D[z] = new int *[ysize];
    for(int y = 0 ; y < ysize ; ++y)
    {  
         array3D[z][y] = new int [xsize];
    }
}

然后您可以访问array3D[z][y]之类的内容(指向给定x=0z的{​​{1}}元素 或y(指向元素&(array3D[z][y][x])xy) 或z(指向给定*(array3D[z])的{​​{1}}和y=0元素,然后全部为x=0类型。我建议写出你的数据是如何组织的。

当然你也必须手动删除这个结构,如果你在产品中这样做,你应该小心处理异常并且不要泄漏,但这是另一个话题。