我有3个数组定义如下:
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
数组中的坐标,然后跟随此数组中的指针到{{ 1}}数组和从heaploc
数组到heaploc
的指针,其中heapmem
被访问但我找不到执行此操作的语法。
答案 0 :(得分:1)
这不是你想听到的答案。
根据经验:每当你发现自己在C程序中写入超过2级间接时,你就会知道你的程序设计存在缺陷并且不必要地模糊不清。不存在您需要三个间接级别的情况。
所以在这里做的正确的事情是退出关键字并指定您想要解决的实际问题。您似乎正在尝试创建一些动态内存分配方案?或者可能是堆抽象数据类型?我不太清楚发布的代码如何适应这两个堆概念中的任何一个。
模型的数组是什么?是否真的需要将数组解释为多维矩阵?通常,当您想要arr[x][y]
访问数组时,可以这样做。
但如果是这种情况,那么在结构本身内存储大量坐标是否有意义?您是否尝试在多维数组中实现某种索引表?这有什么意义呢?
为什么在x和y访问的数组中有x和y变量?等等。
(另外,施放malloc的结果也没有任何意义)