主题
为什么 C 语言在谈“内存”时,总是先谈“对象表示”,而不是先谈“物理内存布局”?写出你的理解(要求围绕“抽象机器”展开)。
C 标准描述的是抽象机器,而不是某一台具体计算机。抽象机器需要规定程序在什么条件下有确定行为,也需要给不同平台留下实现空间。
因此,标准先谈对象、值、类型和对象表示:这些概念说明程序能够观察和操作什么。至于物理内存怎样连接、缓存怎样工作、地址总线怎样组织,属于具体实现的层面。
这样设计后,同一段符合标准的 C 程序可以在不同硬件和操作系统上运行;而当程序越过抽象机器允许的边界时,标准才会把行为留给实现定义、未指定行为或未定义行为处理。