C结构到结构指针数组编译错误
我有一个链表,我试图创建一个临时数组来帮助我在构建结构的其余部分时寻址每个节点,然后我打算释放数组,但似乎我无法将结构的地址存储到指针数组中 以下是我遇到的问题的简化版本:C结构到结构指针数组编译错误,c,arrays,pointers,struct,malloc,C,Arrays,Pointers,Struct,Malloc,我有一个链表,我试图创建一个临时数组来帮助我在构建结构的其余部分时寻址每个节点,然后我打算释放数组,但似乎我无法将结构的地址存储到指针数组中 以下是我遇到的问题的简化版本: vertex *vertexIndex = NULL; vertex *vertexHead = NULL; vertexHead = malloc(sizeof(vertex)); vertexHead->vertexNum = 5; vertexIndex = malloc(sizeof(vertex*)); ve
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);
vertexIndex
应该是指向指针的指针,因为您将其用作指针数组
vertex **vertexIndex = NULL;
vertexIndex
不是结构数组。这只是一个结构指针,这就是为什么会出现错误
如果需要数组,请声明数组:顶点
vertex *vertexHead[10]; //array of 10 pointers
现在,您可以像现在一样使用它了。正如错误消息所说,在那一行,您正试图将指针的内容分配给指针,即将
vertexHead
分配给vertexIndex*
(相当于vertexIndex[0]
,这是不兼容的
您最好发布您的
vertex
定义代码,以便人们可以建议最好做什么。我们可以看到vertexHead和vertexIndex的声明吗?怀疑问题在于sizeof(vertex*)
?虽然您似乎想通过生成指针来填充数组?但我试图理解您想做什么,但没有成功?!我试图以一种稍后可以使用realloc的方式声明数组。是“vertex*vertexIndex[10];”和“vertexIndex=malloc(sizeof(vertex*)*10);”不等效?@user1671981第一个在堆栈上分配,第二个在堆上分配。您可以根据需要使用其中一个。堆栈分配的变量仅在声明的范围内有效。
vertex *vertexHead[10]; //array of 10 pointers