C 将结构复制到动态分配的结构数组中

C 将结构复制到动态分配的结构数组中,c,arrays,pointers,malloc,realloc,C,Arrays,Pointers,Malloc,Realloc,我试图将一个结构复制到一个结构数组 我有一个图形结构,它有一个动态分配的顶点数组字段,称为 vlist 以及一个整数,用于存储vlist中的顶点数 顶点有一个名称数组作为其内部字段。 我得到一个错误的函数,接受一个图和一个字符串,并将一个顶点添加到该图中,该字符串作为顶点的名称 以下是函数: int add_vertex(Graph *graph, const char name[]){ if(name && graph){ /*Allocating space for

我试图将一个结构复制到一个结构数组

我有一个图形结构,它有一个动态分配的顶点数组字段,称为

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 *'
我假设这意味着我将值错误地复制到动态数组中,但我不知道为什么

我的顶点在头文件中定义为:

typedef struct vertex{
  char *name;
} vertex
任何帮助都会很好,谢谢

编辑:

图的定义

typedef struct Graph {
  vertex *vlist;
  int num_verts; 
} Graph;

vlist
成员是一个结构数组,而不是指向结构的指针数组

解决方案:不要动态分配
new\u vert
,只需将其声明为普通结构:

vertex new_vert;
那么它应该可以正常工作


请记住将成员访问权限从
->
修改为

您对
Graph
vlist
的定义不太清楚,我怀疑
sizeof(Graph->vlist)
是指针的大小,而不是指向的数组的大小。显然
realloc(图形->虚拟列表,sizeof(图形->虚拟列表)+sizeof(顶点))
是错误的。与其用英语描述
Graph
的偏差,为什么不复制并粘贴它?
Graph->vlist[Graph->num_verts]=*new_vert?类型
图的定义对这个问题很重要…现在我在声明vertex new\u vert的行上得到一个无效的初始化器错误;