我最近才接触到链接列表,我很绝望。
所以不管怎样,我在下面给出了一些代码,以便更好地理解自己。
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);
看看它们是否真的引用了同一个实例。