Проблема в получении первого адреса трехмерного указателя в одномерном указателе? - PullRequest
0 голосов
/ 16 апреля 2011

может один массив измерений, чтобы указывать на первый адрес трехмерного массива, например, int *array; int ***array3D; array=*array3D; Мне нужно, чтобы первый массив указывал на первый адрес второго массива.Мне нужен только первый адрес в указателе.Может кто-нибудь предложить какие-либо альтернативы, чтобы указать начальный адрес?Заранее спасибо.

1 Ответ

0 голосов
/ 16 апреля 2011

Подобные вещи случаются постоянно, когда вы обрабатываете 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=0 для данных z и y) или &(array3D[z][y][x]) (указывает на элемент x, y, z) или *(array3D[z]) (указывает на элемент y=0 и x=0 для данного z), и тогда все они будут иметь тип int *. Я предлагаю написать, как организованы ваши данные.

Конечно, вы также должны вручную удалить эту структуру, и если вы делаете это в продукте, вы должны быть осторожны, чтобы правильно обрабатывать исключения и не создавать утечки, но это другая тема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...