首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点=节点->next与*节点=*(节点->next)之间的差异?

节点=节点->next与*节点=*(节点->next)之间的差异?
EN

Stack Overflow用户
提问于 2020-04-28 12:49:42
回答 3查看 581关注 0票数 1

这两行C代码有什么区别?

代码语言:javascript
复制
node = node->next; 
*node = *(node->next);

node是一个链接列表节点结构,定义如下:

代码语言:javascript
复制
struct Node{
     int data;
     Node* next;
};

Node* node;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-28 12:55:03

第一个代码段,node = node->next;,是指针赋值。也就是说,当前在node中的地址值将被替换为node->next中的地址。

第二个片段*node = *(node->next);取消指针,并将RHS指向的结构的实际数据复制到LHS指向的结构中。这相当于以下内容:

代码语言:javascript
复制
node->data = node->next->data;
node->next = node->next->next;

注意:在第二种情况下,node包含的地址不会改变;也就是说,它仍然指向内存中的相同位置,但是该内存的内容将被更改。在第一种情况下,node将指向不同的(可能)内存位置,旧位置的内容将保持不变。

票数 6
EN

Stack Overflow用户

发布于 2020-04-28 12:51:57

代码语言:javascript
复制
node = node->next;

将指针分配给指针。

代码语言:javascript
复制
*node = *(node->next);

这是取消指针的引用。它将node的值分配给下一个节点node->next的值。

看下面的图片:

票数 1
EN

Stack Overflow用户

发布于 2020-04-28 12:53:38

指针对值。第一个您将node指针分配给node->next的指针。第二种方法是取消引用*(node->next)的值,这意味着您获取了它的值,并将其分配给节点处的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61480577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档