一种结构存储在另一种结构中

时间:2012-11-21 22:05:17

标签: c graph nodes structure

我试图理解为什么作业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';}

3 个答案:

答案 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;