如何在C中使用struct内部的指针

时间:2012-10-20 07:12:05

标签: c data-structures linked-list

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

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;

肯定是错的。

2 个答案:

答案 0 :(得分:1)

现在正确:

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

mark1->nodeyy = node1;

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

答案 1 :(得分:1)

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

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

然后你可以做

mark -> nodeyy =  (Node *) malloc(sizeof(Node))