0

我有两个结构,一个是链表。

typedef struct Mark{
       int  people;
       Node *nodeyy;
}Mark

typedef struct Node{
       struct node next;
       int value;
}Node

如果我为一个节点分配内存,让我们说

 Node *node1=malloc( sizeof(struct Node));

我还为书签分配了内存,比如说

 Mark *mark1=malloc( sizeof(struct Mark));

我想让mark1中的指针nodeyy指向与node1相同的东西,我该怎么做?

我觉得

 mark1->nodeyy=node1;

肯定是错的。

4

2 回答 2

1

现在正确:

您必须初始化指针或将其指向您知道不会超出范围的现有变量。但是由于 node1 是动态分配的,因此您只是将一个指针分配给另一个指针,这会创建一种对 node1 指向的新分配内存的引用。

mark1->nodeyy = node1;

此语句后,mark1->nodeyy 和 node1 指向 malloc(sizeof(Node)) 返回的内存位置。

于 2012-10-20T07:14:51.807 回答
1

将 struct Mark 中的 int* 更改为 Node*

typedef struct Mark{
       int  people;
       Node *nodeyy;
}Mark

那么你可以做

mark -> nodeyy =  (Node *) malloc(sizeof(Node))
于 2012-10-20T07:17:12.327 回答