Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 节点之间的差异=节点->;下一个vs*节点=*(节点->;下一个)?_C++_C_Linked List - Fatal编程技术网

C++ 节点之间的差异=节点->;下一个vs*节点=*(节点->;下一个)?

C++ 节点之间的差异=节点->;下一个vs*节点=*(节点->;下一个)?,c++,c,linked-list,C++,C,Linked List,这两行C代码之间的区别是什么 node = node->next; *node = *(node->next); 节点是一个链表节点结构,定义如下: struct Node{ int data; Node* next; }; Node* node; 将指针分配给指针 *node = *(node->next); 这是指针的解引用。它将节点的值分配给下一个节点的值节点->下一个 请看下图: 指针与值的比较。第一个将节点指针指定给节点->下一个的指针。

这两行C代码之间的区别是什么

node = node->next; 
*node = *(node->next);
节点
是一个链表节点结构,定义如下:

struct Node{
     int data;
     Node* next;
};

Node* node;
将指针分配给指针

*node = *(node->next);
这是指针的解引用。它将
节点的值分配给下一个节点的值
节点->下一个

请看下图:


指针与值的比较。第一个将
节点
指针指定给
节点->下一个
的指针。第二个是取消引用
*(node->next)
,意思是取其值,并将其分配给node处的值。

第一个代码段,
node=node->next,是指针赋值。也就是说,当前位于
节点
中的地址值将替换为位于
节点->下一个
中的地址

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

struct Node{
     int data;
     Node* next;
};

Node* node;
node->data=node->next->data;
节点->下一步=节点->下一步->下一步;

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

您发布的代码不是有效的C(但它是有效的C++)。你可能用C++代替C吗?我猜<代码>节点< /C>是指针>代码>节点< /C>结构,即<代码>节点*节点;<代码>