我有一个链表,我试图制作一个临时数组来帮助我在构建结构的其余部分时寻址每个节点,然后我打算释放该数组,但似乎无法将结构的地址存储到指针数组中。
以下是我遇到问题的简化版本:
vertex *vertexIndex = NULL;
vertex *vertexHead = NULL;
vertexHead = malloc(sizeof(vertex));
vertexHead->vertexNum = 5;
vertexIndex = malloc(sizeof(vertex*));
vertexIndex[0] = vertexHead; //<<<<<<<<<<< Error on this line
printf("%un", (vertexHead[0])->vertexNum);
main.c:72:19:错误:从类型"struct-vertex*"分配到类型"vertex"时,类型不兼容
如有任何帮助,我们将不胜感激。
编辑
以下是结构
struct edgeStruct {
unsigned int edgeTo;
struct edgeStruct *nextEdge;
};
typedef struct edgeStruct edge;
struct vertexStruct {
unsigned int vertexNum;
edge *edgeHead;
struct vertexStruct *nextVertex;
};
typedef struct vertexStruct vertex;
vertexIndex
应该是指向指针的指针,因为您将其用作指针数组。
vertex **vertexIndex = NULL;
vertexIndex
不是结构的数组。它只是一个结构指针,这就是为什么你会得到错误。
如果您想要一个数组,请声明一个数组:顶点
vertex *vertexHead[10]; //array of 10 pointers
现在,你可以像现在一样使用它了。
正如错误消息所说,在这一行中,您正试图将指针的内容分配给指针,即将vertexHead
(即vertex *
)分配给*vertexIndex
(相当于不兼容的vertexIndex[0]
)。
你最好发布你的vertex
定义代码,这样人们就可以建议最好做什么。