2.1 对象 (Object)
1. 概念
对象的定义
对象是执行环境中数据存储的一个区域,其内容可以表示值。对象不是源代码中的名字,而是那块存储本身:同一个对象可以被不同表达式访问,也可以暂时没有可见标识符(例如通过指针间接访问,或在复合字面量中创建)。
2. 对象的关键属性
对象的三组关键属性
每个对象至少包含三组关键属性:类型、存储期和值。类型决定这段存储如何被解释,存储期决定它何时创建与销毁,值表示当前状态。
3. 对象与标识符
标识符是源代码中的记号;对象是执行期实体。二者常常一一对应,但并不总是如此:结构体成员并不是独立的顶层标识符,却仍然对应对象;同一块存储也可以通过不同标识符间接访问(第8章指针一节会展开此话题)。
c
#include <stdio.h>
int main(void) {
int a = 10;
int b = a;
a = 15;
printf("a = %d, b = %d\n", a, b);
return 0;
}1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
可能的输出(示例):
bash
a = 15, b = 10
4. 对象状态与不确定值
对象存在不等于对象有可用值
对象创建后并不总是立即具有可读取的值。自动存储期对象若未初始化,其值是不确定的,读取它通常没有语义保障;动态分配存储在写入前也不应被当作已有有效值。