【问题标题】:Some confusion in regard with node pointer syntax in C关于 C 中的节点指针语法的一些混淆
【发布时间】:2020-04-20 01:26:36
【问题描述】:

所以我是低级语言的新手。而且我正在浏览一些C的学习资料,我无法真正区分以下表达式之间的区别。

struct Node *temp;
struct Node *head;

//expression 1
temp->next = head;
//expression 2
temp = head;

这两个表达式是否表示将临时节点的指针指向头节点的指针指向的同一件事?

【问题讨论】:

  • 假设nextNode 结构的成员并且类型为struct Node *,那么您有两个不同的指针。它们可以指向相同的位置,也可以指向不同的位置。这就像两个不同的变量。如果你有例如struct Node *temp1, *temp2; 然后temp1 = head; temp2 = head; 你还会问作业之间的区别吗?

标签: c data-structures linked-list


【解决方案1】:

temp 是一个指针。据推测,在您的“表达式 1”之前,它已被设置为指向某个节点 x。然后temp->next = head;xnext 成员设置为head。它改变了 xx 中的 next 成员)。它不会改变temp

相比之下,temp = head;temp 设置为 head。它改变了temp

【讨论】:

  • 是的,我想我现在可以清楚地表达出不同之处了。 temp=head 实际上改变了temp 的地址,而temp->next = head 表示将temp 链接到head 指向的位置,并且它自己的地址不会改变。
  • 对不起,我希望我能给出一个更清晰的问题定义。
【解决方案2】:

正如您在此处声明的那样,temphead 是指针,在第一个表达式中,temp 指针的 next 值指向 head 而在第二个表达式中,您正在制作temp=head

...这并不意味着temp 指向head,而是temp 现在是head...

希望你能明白。 :)

【讨论】:

  • 谢谢。但是对不起,我已经点击了一个复选标记以获得更早的回复。我一定会给你们投票。正如你所看到的,当我问这个问题的时候,我脑子里对指针和节点一团糟。现在清楚多了。
猜你喜欢
  • 2020-07-28
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 2010-09-25
  • 2011-09-04
  • 2016-11-08
  • 1970-01-01
  • 2014-11-18
相关资源
最近更新 更多