我试图理解为什么作业g.node = n1;
不可能。
有人可以解释一下吗?
我们的想法是使用结构创建包含节点的图形。我认为这种方法可行,但我error: incompatible types in assignment
g.node = n1;
#include <stdio.h>
typedef struct
{
int value;
int *edges;
int *adj;
} Node;
typedef struct
{
Node *node;
} Graph;
void resize_array(char *, int);
void copy_array (char *, char *);
int main()
{
Graph g;
Node n1, n2;
int edgesS[1] = {9};
int adjS[1] = {5};
n1.edges = edgesS;
n1.adj = adjS;
n1.value = 1;
g.node = n1;
return 0;
}
void resize_array(char * array, int size){array[size] = '\0';}
答案 0 :(得分:4)
g.node
的类型为Node*
,但n1
的类型为Node
。分配可以作为
g.node = &n1;
代替。请注意,g.node
仅指向Node
;它不包含一个内存。通过上述简单赋值,当n1
超出范围时,内存g.node
指向无效。
答案 1 :(得分:3)
您正在尝试为指针指定值。请尝试使用 n1 的地址,但在“让它工作”之前,请考虑一下这意味着什么。
答案 2 :(得分:2)
Graph
包含一个节点的指针。
要完成您想要的任务,您需要分配新节点的地址。
g.node = &n1;