1

我有一个链表,我正在尝试创建一个临时数组来帮助我在构建结构的其余部分时解决每个节点,然后我打算释放数组,但似乎我无法存储将结构体转换为指针数组。

这是我遇到问题的简化版本:

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”类型时,类型不兼容</p>

任何帮助将不胜感激。

编辑

这是结构

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;
4

3 回答 3

1

vertexIndex应该是指向指针的指针,因为您将它用作指针数组。

vertex **vertexIndex = NULL;
于 2012-09-14T18:28:53.887 回答
1

vertexIndex不是结构数组。这只是一个结构指针,这就是您收到错误的原因。

如果你想要一个数组,声明一个数组:vertex

vertex *vertexHead[10]; //array of 10 pointers

现在,您将能够像现在一样使用它。

于 2012-09-14T18:29:07.063 回答
1

正如错误消息所说,在该行上,您正在尝试将指针的内容分配给指针,即。分配vertexHeadwhich is vertex *to *vertexIndex(相当于vertexIndex[0]哪些不兼容。

最好发布您的定义代码,vertex以便人们可以建议最好做什么。

于 2012-09-14T18:29:53.967 回答