我试图将结构复制到结构数组中。将结构复制到动态分配的结构数组中
我有一个具有顶点的动态分配的数组称为
vlist
和一个整数存储在所述VLIST顶点的数量的字段的图结构。
顶点有一个名称数组作为它们的内部字段。 函数我得到一个错误,需要一个图形和一个字符串,并将一个顶点添加到该图形中,该字符串作为顶点的名称。
下面是函数:
int add_vertex(Graph *graph, const char name[]){
if(name && graph){
/*Allocating space for new vertex*/
vertex *new_vert = malloc(sizeof(vertex));
/*Allocating space for vertex name*/
new_vert->name = malloc(strlen(name)+1);
/*Copying new vertex name to newly allocated vertex*/
strcpy(new_vert -> name, name);
/*Adding a new space to vertex list*/
graph -> vlist = realloc(graph-> vlist, sizeof(graph -> vlist) + sizeof(vertex));
graph -> num_verts += 1;
graph -> vlist[graph->num_verts] = new_vert;
return 1;
}
else{
return 0;
}
我收到错误行:
graph -> vlist[graph->num_verts] = new_vert;
错误:
incompatible types when assigning to type 'vertex' from type 'struct vertex *'
我假设这意味着我” m错误地将值复制到动态数组中,但我无法弄清楚原因。
我的顶点在头文件中定义为:
typedef struct vertex{
char *name;
} vertex
任何帮助都将是巨大的,谢谢!
编辑:
图表
typedef struct Graph {
vertex *vlist;
int num_verts;
} Graph;
对于Graph和vlist是什么,我怀疑sizeof(graph - > vlist)是指针的大小,而不是指向的数组的大小。显然'realloc(graph-> vlist,sizeof(graph - > vlist)+ sizeof(vertex));'是错误的。 –
为什么不复制和粘贴它,而不是用英文描述'Graph'的删除? – Neo
'graph - > vlist [graph-> num_verts] = * new_vert;'? –