C 语言中的 对象(object),值(Value),类型(Type)
C语言的抽象计算模型(Abstract Computational Model)是图灵完备的图灵机(Turing-Completed Turing Machine)。因此,C语言中所操作的对象(Object)是一块内存。如下定义:
也就是说,对象(object)指的是主存(Main Memory)中的一块空间。那么,该对象就有地址(Address)和大小(Size)。两者组合起来叫做内存位置(Memory Location)。其定义如下:
当清楚了,在C语言的语境下,什么是对象后,进一步看什么是值,其定义如下:
也就是,对象(Object)所指的内存空间的内容(Representation / Bit Pattern)所能表达的意义。其解析(Interpretation)需要以来对象(Object)的类型。
那么,可以将对象(Object)所指向的内存空间的内容(Representation)看作是一连串的 0 和 1。那么,该串01 所表达的意义(Semantics)需要根据该对象的类型进行表达。
其中,并非所有的01串组合都能表达有意义的值,如枚举类型中,有部分01串是没有意义的。因此,在C标准里,有非值表示(non-value representation)。定义如下:
也就是说,类型(Type)定义了一个值的集合(Set of Values)。具备该类型的对象的内容(Representation)所表示的值为该集合中的一个。