我有一个链表,我正在尝试创建一个临时数组来帮助我解决每个节点,而我构建其余的结构,然后我打算释放数组但似乎我无法存储将struct的地址转换为指针数组。
这是我遇到问题的简化版本:
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("%u\n", (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;
答案 0 :(得分:1)
vertexIndex
应该是指向指针的指针,因为你将它用作指针数组。
vertex **vertexIndex = NULL;
答案 1 :(得分:1)
vertexIndex
不是struct数组。它只是一个结构指针,这就是你得到错误的原因。
如果需要数组,请声明一个数组:vertex
vertex *vertexHead[10]; //array of 10 pointers
现在,您将能够像现在一样使用它。
答案 2 :(得分:1)
正如错误消息所示,在该行上,您正在尝试将指针内容分配给指针,即。将vertexHead
vertex *
分配给*vertexIndex
(相当于vertexIndex[0]
不相容的内容。
最好发布vertex
定义代码,以便人们可以建议应该做什么。