gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:07:31 25 4
gpt4 key购买 nike

我正在尝试将结构复制到结构数组。

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

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_vert,而是将其声明为普通结构:

vertex new_vert;

那么它应该可以正常工作。

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

关于将结构复制到动态分配的结构数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46747715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com