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

Pointer to memory address in singly linked list where there is no variable represented every element

本文关键字:表示 元素 变量 地址 内存 指针 单链表 链表      更新时间:2023-10-16

单链表图像

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

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

指针指向INFO和LINK组合在一起的结构体。从指针,编译器将知道如何访问字段INFO和LINK,分别表示为P->INFO和P->LINK。

很可能p ->INFO中的值和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指向指针link"。您将看到链接的地址。它具有与节点相同的地址1

R->link 

指向与

相同的地址
S->link 

.

R->link 

也指向与

相同的地址
Q->link 

P->link->link

是节点3

如果你理解这个概念,这意味着你可以通过以下方式指向节点4:

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