我正在采用"编程语言:设计和实现"当然,想知道什么"运行时表示"意思是编程语言?
答案 0 :(得分:0)
要理解它,你需要记住(当代)计算机只知道整数(各种长度:1,2,4或8字节),IEEE浮点数(4或8字节)和内存地址(指针) ,4或8个字节)。
因此,当您想要一个列表时,例如,您(或者至少是您正在使用的语言的编译器编写者)需要考虑如何在运行时在内存中表示列表(!)。
单链表元素的一种可能表示形式:
|________|________|
DataPtr NextPtr
列表节点采用两个相邻指针大小的存储字,第一个指向实际数据,第二个字指向下一个列表节点。
这里有两点需要注意:
表示非常随意。例如,我们可以切换数据和下一个指针,这将是另一个与前一个一样好的表示。
考虑元组或对的运行时表示。它可能是:
| ________ | ________ |
PtrFirst PtrSecond
,即分别保存指向第一和第二组件的两个存储器字。听起来很熟悉?
那么,我们如何判断两个后续的持有指针的单词是代表一对还是一个列表元素?我们不能!我们的许多数据抽象最终将使用相同的运行时表示。