【发布时间】:2016-05-09 12:05:28
【问题描述】:
这句话来自SICP,我认为这是在谈论编程语言中的指针/引用。
正如我们所看到的,对提供了一种原始的“粘合剂”,我们可以使用它来构造复合数据对象。图 2.2 显示了一种可视化配对的标准方法——在本例中,配对由 (cons 1 2) 组成。在这种称为框和指针表示法的表示中,每个对象都显示为指向框的指针。原始对象的框包含对象的表示。例如,数字框包含一个数字。一对的盒子实际上是一个双盒子,左边的部分包含(指向)这对的汽车,右边部分包含 cdr。
在这种情况下,本书讨论的是对(例如(cons 1 2))以及它们是如何表示的。但是我们也可以使用对来构造一个这样的列表:
(cons 1 (cons 2 '()))
虽然 box-and-pointer-notation 只是一种表示法而且没用,但我认为这看起来很像一个链表。据我了解,链表是一种数据结构,其中包含一个值和指向另一个链表的指针。话虽如此,我认为 cons 可以像链表一样构造。我很困惑:
一对的盒子实际上是一个双盒子,左边的部分包含(指向)这对的汽车,右边部分包含 cdr。
我最初认为指针应该在 cdr 上,因为如果我们通过对构造一个列表,那将是下一个列表。
我认为这可能是一种不同类型的指针。在这种情况下,指针到底意味着什么?我知道的唯一指针是 c 中使用的指针。 SICP 有没有提到 c 指针?
【问题讨论】:
标签: c pointers linked-list lisp sicp