C struct into struct pointers数组编译错误

时间:2012-09-14 18:23:47

标签: c arrays pointers struct malloc

我有一个链表,我正在尝试创建一个临时数组来帮助我解决每个节点,而我构建其余的结构,然后我打算释放数组但似乎我无法存储将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;

3 个答案:

答案 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定义代码,以便人们可以建议应该做什么。