Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.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++ 指向单链表中的内存地址的指针,其中没有表示每个元素的变量_C++_C_Data Structures_Linked List_Memory Address - Fatal编程技术网

C++ 指向单链表中的内存地址的指针,其中没有表示每个元素的变量

C++ 指向单链表中的内存地址的指针,其中没有表示每个元素的变量,c++,c,data-structures,linked-list,memory-address,C++,C,Data Structures,Linked List,Memory Address,嘿,伙计们,我对上面的图片有点困惑。1000、800、1400和1100是内存地址,所以让我们将其设为H1000、H800、H1400、H1100 我的问题是: 1.仅信息或信息和链接以上的所有内存地址的内容? 2.P仅指向信息,或同时指向两者? 3.P指向H1000? 4.如果我打印P,它会显示H1000? 5.R仅指向链接,或同时指向链接和信息? 6.如果我打印R,它会显示链接或H800的内存地址? 7.P->LINK是正确的语法吗,因为P只是一个指针? 8.R->LINK是正确的语法吗,因



嘿,伙计们,我对上面的图片有点困惑。1000、800、1400和1100是内存地址,所以让我们将其设为H1000、H800、H1400、H1100

我的问题是:
1.仅信息或信息和链接以上的所有内存地址的内容?
2.P仅指向信息,或同时指向两者?
3.P指向H1000?
4.如果我打印P,它会显示H1000?
5.R仅指向链接,或同时指向链接和信息?
6.如果我打印R,它会显示链接或H800的内存地址?
7.P->LINK是正确的语法吗,因为P只是一个指针?

8.R->LINK是正确的语法吗,因为R只是点对链接?

指针指向包含信息和链接的结构。通过指针,编译器将知道如何访问字段INFO和LINK,表示为P->INFO和P->LINK


最有可能的是,p中的值和p->INFO的地址将是相同的,并且p->LINK的地址将与p->INFO的地址有一个恒定的偏移量,但是你不应该关心这个。

哇。这是一个毫无帮助的形象,没有任何背景

但一般来说,C中的链表是一组节点,每个节点都包含指向某些有用信息(要存储在列表中的元素)的指针和指向列表中下一个元素(如果有)的指针

struct node {
    void*   info;
    void*   link;
};

因此,p(以及Q、R和S)是指向
struct node
的指针,因此通过
p->info
可以访问元素,通过
p->link
可以知道列表中的下一个元素是什么

我假设您的静默的数据结构是

struct Node {
  Info info;
  Node *link;
}

Node* p = new Node(15); // node 1
Node* q = new Node(27); // node 2
Node* r = new Node(22); // node 3
Node* s = new Node(17); // node 4
我不打算一一回答

p、 q r、s和link具有相同的类型,它们是一个指针。 所以p将指向一个节点,它有一个信息和链接。 你看图时有误解

当你打印p时,你当然会看到地址,因为它们都是指针。它们只能包含地址,不能包含值

当你看到p->link时,我们可以说它“指针p指向指针链接”。您将看到链接具有的地址。它与节点1具有相同的地址

R->link 
指向的地址与

S->link 

也指向与相同的地址

Q->link 

哪一个是节点3

如果理解此概念,则意味着您可以通过以下方式指向节点4:

P->link->link->link
Q->link->link
R->link->link
S->link

内存地址用于
节点
,其中包括有效负载(
info
)和指向下一个节点的指针(
链接
p
指向包含有效负载和链接的
节点(用于节点的
结构)<代码> 1000 < /代码>或 1000 HEX 只是对同一地址的不同引用。C++与C++是不一样的…在C++中,使用一些标准容器,例如:代码> STD::列表< /代码>这是一个可怕的图表。如果您假设地址是整个结构的,并且所有指针都指向结构的开头,而不是结构中的字段,这是否有帮助?但在图片中,指针R指向列表第二个元素的链接。否。。不。。就像大家说的。这是一张可怕的照片,不要相信这张照片。menyesatkan。R指向节点。这样你就可以像R->link或R->info那样做。那么,R->link将带我进入下一个元素?也许你是对的。但是这在C语言中是不容易做到的-信息的类型是什么?在图像上多加一点上下文可能会有帮助。信息是整数。最让我困惑的是R指针。我不知道是Q=R,还是R指向链接字段我看起来像是指向/a链接字段。但是是的,这很令人困惑。对,你明白了。箭头R有点误导人,除非它们真正的意思是“链接字段的地址”,但这不太可能。如果我写R->LINK,它将带我到下一个元素,它由S指向?是的,如果R指向结构。如果R直接指向链接字段,则语法*R适用(但同样,这不太可能)。如果R指向链接字段的链接。也就是说,R指向H800+偏移量。
P->link->link
P->link->link->link
Q->link->link
R->link->link
S->link