C++ 节点之间的差异=节点->;下一个vs*节点=*(节点->;下一个)?
这两行C代码之间的区别是什么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); 这是指针的解引用。它将节点的值分配给下一个节点的值节点->下一个 请看下图: 指针与值的比较。第一个将节点指针指定给节点->下一个的指针。
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>结构,即<代码>节点*节点;<代码>