16. 对象与内存模型
本章围绕 C 语言的一个核心概念:对象 (Object)。
在 C 语言里:
- 对象是执行环境中一块用于存储的区域;
- 对象有类型 (Type)、大小 (Size) 与对齐要求 (Alignment requirement);
- 对象在其生存期 (Lifetime) 内,承载某个值 (Value)(或承载不确定值 (Indeterminate value))。
第 2 章已经建立对象、值与类型的基本概念,第 15 章已经说明声明和生存期。本章在这些前提上继续研究抽象机怎样表示对象、怎样约束访问,以及哪些行为受到标准保证。
1. 本章目录
2. 习题
#11601
⚡1⏳2
给出“对象”“类型”“值”“标识符”四者的区别,并各举一个例子。
#11602
⚡1⏳2
解释以下代码中:哪些名字是对象?哪些名字是类型?哪些表达式求值会产生未定义行为 (Undefined Behavior, UB)?
c
int main(void) {
int x;
int* p = &x;
return *p;
}1
2
3
4
5
2
3
4
5
#11603
⚡1⏳2
为什么 C 语言在谈“内存”时,总是先谈“对象表示”,而不是先谈“物理内存布局”?写出你的理解(要求围绕“抽象机器”展开)。