C 一个结构存储在另一个结构中
我试图理解为什么赋值C 一个结构存储在另一个结构中,c,graph,nodes,structure,C,Graph,Nodes,Structure,我试图理解为什么赋值g.node=n1不可能 有人能解释一下吗? 其思想是使用结构创建具有节点的图。我原以为这个方法会奏效,但我得到了错误:赋值中的不兼容类型g.node=n1 #include <stdio.h> typedef struct { int value; int *edges; int *adj; } Node; typedef struct { Node *node; } Graph; void resize_array(c
g.node=n1代码>不可能
有人能解释一下吗?
其思想是使用结构创建具有节点的图。我原以为这个方法会奏效,但我得到了错误:赋值中的不兼容类型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';}
#包括
类型定义结构
{
int值;
int*边;
int*adj;
}节点;
类型定义结构
{
节点*节点;
}图形;
void resize_数组(char*,int);
无效复制_数组(char*,char*);
int main()
{
图g;
节点n1,n2;
int-edges[1]={9};
int adjS[1]={5};
n1.边缘=边缘;
n1.adj=adjS;
n1.数值=1;
g、 节点=n1;
返回0;
}
void resize_数组(char*array,int size){array[size]='\0';}
g.node
属于node*
类型,但n1
属于node
类型。这项任务将尽可能完成
g.node = &n1;
相反。请注意,g.node
仅指向节点
;它不包含一个的内存。使用上述简单赋值,当n1
超出范围时,指向的内存g.node
将变为无效。您正在尝试为指针赋值。尝试使用n1的地址,但在“使其工作”之前,请先考虑一下这意味着什么。图形包含指向节点的指针。
要完成所需操作,需要分配新节点的地址
g.node = &n1;
你正在学习C语言教程。现在,正如编译器所说:赋值中的不兼容类型
。想一想这些类型。犹豫是否投票结束。这是一个很有道理的问题,对于C语言新手来说,这是一个非常非常常见的问题,可能还有整个工具链。好的,谢谢。我想它处理指针和数组一样。谢谢。我理解指针是什么,但对C如何处理各种数据类型的指针感到困惑。