将三维指针的第一个地址转换成一维指针时出现问题

Problem in getting the first address of a 3 dimensional pointer into a single dimensional pointer?

本文关键字:指针 一维 问题 转换 三维 第一个 地址      更新时间:2023-10-16

可以让一个一维数组指向三维数组的第一个地址,如。int *array; int ***array3D; array=*array3D;我需要第一个数组指向第二个数组的第一个地址。我只需要将第一个地址放入指针。谁能提出其他的建议来指向起始地址?

在处理2D和3D图像时,这种情况经常发生。

你写的(array = *array3D)显然不会编译,因为类型不匹配。array3D**int, array为*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]这样的东西(指向zyx=0元素)或&(array3D[z][y][x])(指向元素x, y, z)或*(array3D[z])(指向给定zy=0x=0元素),然后所有类型都为int *。我建议写下你的数据是如何组织的。

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