-1

我试图理解为什么这项任务g.node = n1;是不可能的。

谁能解释一下?这个想法是使用结构创建一个带有节点的图。我认为这种方法会起作用,但我得到error: incompatible types in assignmentg.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';}
4

3 回答 3

4

g.node是 typeNode*但是n1是 type Node。分配将是可能的

g.node = &n1;

反而。请注意,g.node仅指向Node; 它不包含一个人的记忆。通过上面的简单赋值,当n1超出范围时,内存g.node指向变得无效。

于 2012-11-21T22:07:41.087 回答
3

您正在尝试为指针赋值。尝试取n1的地址,但在“让它工作”之前先想想这意味着什么。

于 2012-11-21T22:07:52.023 回答
2

Graph包含指向节点的指针。为了完成你想要的,你需要分配新节点的地址。

g.node = &n1;
于 2012-11-21T22:08:30.667 回答