2013-12-04 3 views
1

У меня есть 3 массивы определяются следующим образом:2D массив указателей на массив указателей на массив STRUCT

typedef struct heapMemNode 
{ 
    int *coord; 
    int x, y; 
    int *prevcoord; 
    int px, py; 
    int d; 
    char tp; 
    int *telcoord; 
    int c; 
} hmemn; 

hmemn *heapmem = calloc((siz2+1), sizeof(hmemn)); 
int *heaploc = calloc((siz2+1), sizeof(hmemn *)); 
int ***coords = (int ***)calloc((siz2+1), sizeof(int **)); 

for(i = 0; i<=siz2; i++){ 
    coords[i] = (int**)calloc((siz2+1),sizeof(int*)); 
} 

Я хочу, чтобы иметь возможность получить доступ к элементам в heapmem массиве, например, heap[].tp, введя координаты в массиве coords и следуя указателю от этого массива до массива heaploc и указателю от массива heaploc до heapmem, к которому обращается tp, но я не могу найти синтаксис для этого.

ответ

1

Это не тот ответ, который вы хотите услышать.

Как правило, когда вы пишете более двух уровней косвенности в программе на C, вы знаете, что ваш дизайн программы ошибочен и излишне неясен. Нет случая, когда вам понадобится три уровня косвенности.

Таким образом, правильная вещь, чтобы сделать здесь, - это отступить от ключевого слова и указать фактическую проблему, которую вы хотите решить. Казалось бы, вы пытаетесь создать какую-то динамическую схему распределения памяти? Или, может быть, абстрактный тип данных кучи? Я не совсем понимаю, как размещенный код будет соответствовать любой из двух концепций кучи.

Что такое массив модели? Существует ли необходимость интерпретировать массив как многомерную матрицу? Обычно вы делаете это, когда хотите получить доступ к массиву на arr[x][y].

Но если это так, то имеет смысл хранить целые координаты внутри самой структуры? Вы пытаетесь внедрить некоторую таблицу индексов внутри многомерного массива? Как это имеет смысл?

Почему у вас есть переменные, называемые x и y внутри массива, к которому обращаются x и y? И так далее.

(Кроме того, литье результата malloc не имеет никакого смысла)

Смежные вопросы