【发布时间】:2022-01-23 16:47:40
【问题描述】:
我可以为节点参数初始化所有内存,现在我只想初始化一个结构参数(node-> nb),但是有错误
我的代码
#define v 10
typedef struct node_type{
int id;
int nb[v];
bool link_capacity;
}node_t;
int main()
{
int i,j;
node_t *node;
node = (node_t *) malloc(v*sizeof(node_t));
memset(node, 0, v*sizeof(node_t));
node[0].nb[0]=1;
node[1].nb[0]=2;
node[0].id=1;
node[1].id=2;
printf("%d %d %d %d\n",node[0].nb[0],node[1].nb[0],node[0].id,node[1].id);
memset(node->nb, 0, v*sizeof(node_t));
printf("%d %d %d %d\n",node[0].nb[0],node[1].nb[0],node[0].id,node[1].id);
return 0;
}
Ans:
1 2 1 2
0 0 1 0
But I hope that Ans:
1 2 1 2
0 0 1 2
如何修改?
【问题讨论】:
-
不要从 malloc 中强制返回,见stackoverflow.com/questions/605845/…
-
什么是
path? -
哦,路径错误。
-
您可以将
node = malloc(v*sizeof(node_t)); memset(node, 0, v*sizeof(node_t));替换为calloc( v, sizeof(*node));请注意,我还将sizeof(node_t)替换为sizeof(*node),因此大小始终与指针变量本身直接相关。