我最近才接触到链接列表,我很绝望。
所以不管怎样,我在下面给出了一些代码,以便更好地理解自己。

struct node
{
    int item;
    struct node *next;
};
struct node *root;
struct node *conductor;

root = malloc(sizeof(struct node));

root->item = 777;
root->next = 0;

所以我的问题是,当我这样做时会发生什么:conductor = node;
此外,以下各项之间是否存在差异:
conductor = node;


conductor = malloc(sizeof(struct node));
conductor->item = root->item;
conductor->next = root->next;

如果有区别,有什么区别你将如何编写一个等价的conductor = root;语句呢?

最佳答案

conductor=root

使conductor指向与node相同的地址,而
conductor=malloc(sizeof(struct node));
conductor->item=root->item;
conductor->next=root->next;

创建一个全新的副本你可以试试
printf("%p %p", conductor, root);

查看他们指向的地址,或
node->item = 12345;
printf("%d %d", conductor->item, root->item);

看看它们是否真的引用了同一个实例。

09-11 17:58