程 序 设 计 语 言 原 理 Principle of Programming Languages 裘 宗 燕 北 京 大 学 数 学 学 院 2012.2~2012.6 3. 对 象 和 环 境 数 据 和 类 型 对 象 : 创 建 销 毁 和 使 用 ( 存 在 期 ) 变 量 : 命 名 和 性 质 约 束 作 用 域 名 字 分 类 指 针 和 引 用 别 名 其 他 相 关 问 题 2012 年 3 月 2
约 束 时 间 约 束 (binding, 也 称 绑 定 ) 就 是 建 立 联 系 约 束 时 间 指 一 个 联 系 的 建 立 时 间 ( 有 时 还 要 考 虑 持 续 期 间 ) 广 义 指 做 出 一 种 决 策 的 时 间 与 高 级 语 言 和 程 序 有 关 的 重 要 时 间 概 念 : 语 言 设 计 时 如, 语 言 的 各 种 结 构 都 是 在 设 计 时 确 定 的 语 言 实 现 时 如, 各 种 数 据 类 型 的 表 示, 程 序 实 现 方 式, 内 部 结 构 的 设 计 编 程 时 如, 程 序 员 选 择 算 法 和 数 据 结 构 程 序 结 构 编 译 时 从 程 序 中 高 级 结 构 到 机 器 代 码 的 映 射, 数 据 对 象 的 布 局 连 接 时 静 态 数 据 对 象 分 配, 跨 模 块 对 象 约 束, 库 对 象 约 束 装 载 时 静 态 对 象 的 内 存 定 位, 虚 地 址 到 实 地 址 的 映 射 运 行 时 自 动 变 量 的 存 储 位 置, 变 量 的 值 约 束, 运 行 时 的 其 他 事 项 哪 些 特 征 能 静 态 约 束, 或 必 须 动 态 约 束, 不 同 语 言 之 间 差 别 很 大 一 般 而 言, 静 态 约 束 能 提 高 效 率 意 义 清 晰, 动 态 约 束 提 供 更 大 灵 活 性 2012 年 3 月 3 数 据 和 类 型 程 序 的 工 作 是 处 理 数 据 数 据 : 能 在 程 序 与 外 界 间 传 送 ( 输 入 / 输 出 ), 在 程 序 里 保 存 / 处 理 的 信 息 常 见 的 数 据 形 式 有 字 符 整 数 实 数 等 还 有 其 他 许 多 不 同 种 类 的 数 据 数 据 是 程 序 运 行 中 存 在 的, 被 动 性 的 实 体 程 序 运 行 中 需 要 在 其 内 部 的 不 同 部 分 之 间 传 递, 被 程 序 处 理 在 运 行 的 程 序 与 其 外 部 环 境 之 间 传 递 ( 输 入 / 输 出, 与 环 境 交 互, 包 括 与 程 序 的 使 用 者 交 互 ) 计 算 机 里 的 数 据 最 终 都 以 二 进 制 形 式 表 示 ( 统 一 性 ) 同 样 二 进 制 编 码 可 能 表 示 不 同 意 义 ( 不 同 的 解 释 ) 把 数 据 划 分 为 一 些 集 合, 每 个 集 合 里 的 数 据 具 有 相 同 性 质, 可 以 满 足 类 似 的 处 理 需 要, 有 助 于 程 序 处 理 为 此 引 入 了 类 型 的 概 念 2012 年 3 月 4
数 据 和 类 型 为 什 么 需 要 把 数 据 分 为 类 型? 特 别 是 在 高 级 语 言 里? 有 很 多 理 由, 例 如 : 提 供 了 对 被 处 理 数 据 的 一 种 概 念 划 分 有 助 于 人 理 解 和 思 考 与 数 据 有 关 的 各 方 面 问 题 有 可 能 更 有 效 地 实 现 不 同 类 型 的 数 据 大 小 可 能 不 同 ( 表 示 它 们 需 要 的 存 储 量 不 同 ), 支 持 的 操 作 不 同, 被 操 作 的 方 式 不 同 划 分 为 类 型, 可 能 用 于 确 定 操 作 的 可 用 性 和 具 体 的 操 作 方 式 可 能 对 数 据 的 使 用 加 以 控 制 和 检 查 确 定 应 该 使 用 的 操 作 和 操 作 方 式, 发 现 使 用 中 的 错 误 可 能 基 于 类 型 及 类 型 之 间 的 关 系 组 织 计 算 过 程, 组 织 程 序 这 件 事 的 价 值 初 看 并 不 明 显 随 着 程 序 的 实 践 越 来 越 输 入, 这 一 认 识 的 重 要 性 越 来 越 清 晰 2012 年 3 月 5 类 型 对 类 型 的 一 个 简 单 ( 朴 素 ) 的 看 法, 是 将 其 看 作 数 据 的 集 合 同 一 个 类 型 的 数 据, 通 常 : 具 有 相 同 的 属 性 和 统 一 的 使 用 方 式 采 用 统 一 的 表 示 方 式, 可 能 具 有 同 样 的 编 码 形 式 或 / 和 编 码 长 度 采 用 统 一 的 解 释 方 式 ( 从 二 进 制 编 码 到 数 据 的 意 义 ) 对 它 们 可 以 使 用 同 样 一 组 操 作 类 型 是 计 算 机 科 学 技 术 里 的 一 个 重 要 概 念 有 许 多 实 践 性 研 究 和 理 论 研 究 下 一 章 将 专 门 讨 论 程 序 语 言 里 的 类 型 问 题 ( 从 实 践 的 角 度 讨 论 ) 前 面 说 过, 有 关 类 型 的 理 论 研 究 成 果 丰 富 ( 国 内 做 得 很 少 ) 这 里 只 简 单 提 出 类 型 的 概 念 及 其 在 程 序 设 计 语 言 里 的 意 义 2012 年 3 月 6
对 象 : 创 建 销 毁 和 使 用 对 象 指 程 序 运 行 中 存 在 在 运 行 的 环 境 中 真 有 体 现 的 实 体, 如 变 量 等 注 意 : 源 程 序 中 描 述 的 东 西, 未 必 在 程 序 运 行 时 存 在 例 如 类 型 : 在 多 数 语 言 里, 类 型 在 程 序 运 行 时 并 不 存 在, 不 能 使 用 常 量 : 可 能 有 不 同 的 情 况, 整 数 ( 大 / 小 ) 字 符 串 的 情 况 不 同 我 们 把 程 序 运 行 中 实 际 存 在 的 实 体 统 称 为 程 序 对 象 ( 简 称 对 象 ) 一 个 对 象 可 能 只 在 程 序 运 行 中 的 某 一 段 时 间 存 在 ( 生 存 期 问 题 ) 为 理 解 程 序 的 意 义, 需 要 弄 清 楚 程 序 中 的 对 象 : 什 么 时 候 存 在, 何 时 创 建, 如 何 创 建, 何 时 销 毁, 如 何 销 毁 可 以 怎 样 使 用 这 里 的 术 语 对 象 比 面 向 对 象 中 的 对 象 的 意 义 更 广 泛 OO 里 的 对 象 是 这 里 讨 论 的 对 象 的 一 个 子 集 ( 类 的 实 例 ) 2012 年 3 月 7 对 象 : 生 存 期 每 个 程 序 对 象 都 有 其 创 建 和 销 毁, 有 生 命 周 期 ( 生 存 期,extent) 一 个 对 象 的 生 存 期 是 程 序 执 行 中 的 一 段 时 间 ( 具 体 生 存 期 由 语 言 规 定 ) 一 个 对 象 只 在 从 其 创 建 到 销 毁 的 期 间 中 存 在 创 建 和 销 毁 可 能 伴 有 特 定 的 动 作 ( 例 : 常 量 创 建 时 需 要 给 定 值 ) 对 象 的 创 建 (creation) 可 能 是 静 态 创 建, 包 括 编 译 时 完 成, 连 接 时 完 成, 或 者 装 载 时 完 成 动 态 创 建, 运 行 中 创 建 对 象 的 销 毁 (destroy) 可 能 在 运 行 中 完 成, 可 能 有 资 源 的 处 理 问 题 程 序 终 止 时 完 成 生 存 期 跨 越 程 序 运 行 期 的 对 象 称 为 持 续 性 (persistent, 持 久 ) 对 象 2012 年 3 月 8
对 象 : 生 存 期 对 象 根 据 其 生 存 期, 首 先 可 以 分 为 两 大 类 : 静 态 对 象 : 静 态 ( 程 序 开 始 执 行 前 ) 创 建, 直 至 程 序 终 止 时 销 毁 非 静 态 对 象 : 程 序 运 行 中 创 建 和 销 毁 一 些 情 况 : Fortran 中 的 所 有 变 量 都 可 以 实 现 为 静 态 对 象 语 言 设 计 时 有 这 种 考 虑, 但 具 体 实 现 是 否 采 用 可 以 选 择 C 中 的 外 部 变 量 和 局 部 static 变 量 是 静 态 对 象, 自 动 变 量 是 非 静 态 对 象 创 建 的 对 象 可 能 需 要 给 定 一 个 值 ( 初 始 化 ) 但 创 建 和 初 始 化 动 作 有 可 能 同 时 做 或 者 不 同 时 做, 存 在 不 同 的 想 法 例 如 C++ 的 局 部 static 变 量 是 静 态 创 建, 但 在 执 行 首 次 进 入 变 量 所 在 函 数 时 进 行 初 始 化 2012 年 3 月 9 对 象 : 生 存 期 存 在 的 ( 生 存 的 ) 对 象 通 常 有 一 个 固 定 的 标 识, 通 常 ( 可 以 ) 用 对 象 的 存 储 位 置 表 示 对 象 总 占 据 着 一 块 存 储 空 间, 在 其 中 保 存 自 己 的 值 后 面 有 时 用 图 示 表 示 : 存 储 位 置 对 象 创 建 也 常 常 被 称 为 分 配 (allocation) 创 建 对 象 可 能 需 要 分 配 资 源 最 基 本 的 资 源 是 存 储, 一 个 对 象 要 在 程 序 执 行 中 存 在, 程 序 代 码 执 行 中 可 以 找 到 它, 就 必 须 有 一 个 存 储 位 置 ( 最 基 本 的 资 源 占 用 ) 具 体 对 象 还 可 能 占 用 其 他 资 源 例 如, 一 个 文 件 指 针 对 象, 可 能 需 要 安 排 一 个 文 件 缓 冲 区 2012 年 3 月 10 值
对 象 : 生 存 期 静 态 创 建 的 对 象 在 程 序 执 行 中 始 终 存 在, 生 存 期 是 程 序 的 整 个 执 行 过 程 例 :C 语 言 的 全 局 变 量 动 态 创 建 的 对 象 具 有 较 短 的 生 存 期 例 :C 的 局 部 自 动 变 量, 生 存 期 是 它 的 定 义 所 在 的 函 数 ( 或 者 定 义 所 在 的 复 合 语 句 ) 的 执 行 期 间 程 序 对 象 创 建 时 可 能 需 要 执 行 一 些 动 作, 销 毁 时 也 可 能 需 要 执 行 一 些 动 作 例 :C 标 准 函 数 fopen 创 建 一 个 FILE 对 象, 建 立 文 件 链 接 ( 执 行 一 些 操 作 系 统 动 作 ), 分 配 数 据 缓 冲 区 和 附 属 结 构 对 相 应 文 件 指 针 执 行 fclose 操 作 将 销 毁 这 个 对 象 销 毁 时 做 的 操 作 包 括 : 清 理 缓 冲 区, 释 放 数 据 缓 冲 区 的 存 储, 释 放 文 件 链 接 等 C++ 等 一 些 语 言 允 许 程 序 员 为 一 些 对 象 的 创 建 和 销 毁 定 义 特 定 的 动 作 ( 在 定 义 类 时, 为 该 类 的 对 象 定 义 构 造 函 数 和 析 构 函 数 ) 2012 年 3 月 11 生 存 期 : 存 储 分 配 创 建 对 象 时 首 先 需 要 为 其 存 储 分 配 对 象 分 配 有 三 种 情 况 : 静 态 分 配 : 静 态 确 定 对 象 的 地 址 和 范 围, 执 行 中 保 持 不 变 栈 分 配 : 具 有 后 创 建 先 销 毁 性 质 的 对 象, 可 以 采 用 栈 分 配 技 术 堆 分 配 : 不 能 采 用 上 述 方 式 分 配 的 对 象, 只 能 在 堆 里 分 配 一 个 程 序 运 行 时 将 拥 有 一 块 存 储, 其 存 储 区 域 通 常 分 为 三 部 分 : 静 态 区, 栈 区 ( 程 序 运 行 栈 ) 和 堆 区 ( 动 态 管 理 区 ), 分 别 对 应 上 面 的 三 种 分 配 静 态 区 可 能 还 分 为 只 读 区 和 读 写 区 ( 依 赖 于 操 作 系 统 支 持 ): 代 码 放 在 只 读 区, 常 量 对 象 也 可 能 被 放 在 只 读 区 静 态 分 配 的 变 量 放 在 静 态 区 里 的 可 读 写 区 例 :C 语 言 不 允 许 修 改 字 符 串 常 量 ( 下 面 程 序 是 错 误 的 ): char *p = "a string"; *p = A ; /* 可 能 导 致 程 序 崩 溃, 字 符 串 常 量 可 能 在 只 读 区 */ 2012 年 3 月 12
生 存 期 : 静 态 分 配 静 态 分 配 的 对 象, 其 所 有 性 质 ( 包 括 大 小 ) 必 须 都 能 静 态 确 定 常 见 : 全 局 变 量 ( 有 些 语 言 没 有 全 局 变 量, 如 Java) 需 要 建 立 对 象 的 常 量, 包 括 : 一 些 全 局 常 变 量, 字 符 串 和 浮 点 数 字 面 量 ( 可 能 还 有 些 整 数 字 面 量 ) 子 程 序 代 码 局 部 静 态 变 量 如 C 函 数 的 static 变 量,C++/Java 类 的 static 数 据 成 员 子 程 序 代 码 常 变 量 字 面 量 对 象 有 可 能 被 分 配 在 只 读 存 储 区, 修 改 它 们 将 导 致 动 态 运 行 错 误 ( 相 关 检 查 通 常 需 要 操 作 系 统 支 持 ) 编 译 系 统 可 能 在 静 态 区 建 立 一 些 为 支 持 程 序 运 行 所 需 的 静 态 数 据 结 构, 例 如 为 支 持 动 态 检 查 和 执 行 的 表 格 如 数 组 维 数 和 上 下 界, 支 持 越 界 检 查 ;OO 语 言 里 类 的 虚 表, 支 持 存 储 管 理 和 异 常 处 理 的 数 据 结 构 等 2012 年 3 月 13 静 态 分 配 实 例 :Fortran Fortran 语 言 的 基 本 设 计 考 虑 ( 对 Fortran 90 前 的 Fortran 都 适 用 ): 所 有 对 象 都 可 以 静 态 分 配, 程 序 运 行 中 可 以 只 有 静 态 区 这 一 设 计 是 为 了 保 证 Fortran 程 序 执 行 的 高 效 率, 带 来 的 一 些 情 况 : 不 允 许 子 程 序 的 递 归 调 用, 子 程 序 里 的 局 部 变 量 只 需 要 一 套 静 态 分 配 使 程 序 里 所 有 变 量 访 问 都 可 以 编 译 为 直 接 的 地 址 访 问 程 序 运 行 前 完 成 所 有 对 象 创 建, 运 行 中 不 做 任 何 对 象 分 配 和 释 放 工 作 Fortran 不 支 持 许 多 非 常 重 要 的 程 序 设 计 技 术 : 不 能 采 用 递 归 方 式 描 述 和 实 现 算 法 不 支 持 变 长 度 的 数 组 或 字 符 串 没 有 动 态 存 储 分 配, 不 支 持 动 态 数 据 结 构 ( 如 链 表 ), 等 等 Fortran 90 加 入 了 递 归 和 动 态 存 储 分 配, 语 言 的 实 现 模 型 必 须 改 变 2012 年 3 月 14
生 存 期 : 栈 分 配 在 允 许 递 归 的 语 言 里, 子 程 序 里 定 义 的 局 部 对 象 不 能 静 态 分 配 一 个 局 部 对 象 可 能 同 时 存 在 多 个 活 动 的 副 本 ( 因 为 可 以 有 递 归 ) 由 于 子 程 序 调 用 有 后 进 先 出 性 质, 因 此 其 局 部 对 象 可 以 采 用 栈 分 配 栈 对 象 的 分 配 和 使 用 方 式 : 编 译 时 为 每 个 子 程 序 确 定 栈 帧 的 结 构 : 计 算 各 局 部 对 象 所 需 存 储 量, 在 帧 里 为 它 们 安 排 位 置, 确 定 各 对 象 相 对 于 帧 起 始 位 置 的 偏 移 量 运 行 进 入 一 个 子 程 序 时, 为 这 个 子 程 序 的 帧 在 栈 里 分 配 空 间 设 置 帧 指 针 ( 通 常 用 一 个 寄 存 器 ) 指 向 当 前 子 程 序 的 帧 子 程 序 里 使 用 局 部 对 象 都 通 过 帧 指 针 按 特 定 偏 移 量 进 行 ( 编 译 生 成 的 代 码 里 都 用 这 种 方 式 ) 利 用 CPU 的 位 移 寻 址 模 式 可 实 现 有 效 访 问 子 程 序 结 束 时 释 放 对 应 的 栈 帧, 所 有 局 部 对 象 都 销 毁 ( 有 些 语 言 在 销 毁 前 执 行 一 些 特 定 动 作 如 C++ 可 以 定 义 销 毁 动 作, 析 构 函 数 ) 2012 年 3 月 15 生 存 期 : 栈 分 配 栈 和 栈 帧 的 可 能 布 局 情 况 sp: 栈 顶 指 针 fp: 当 前 帧 指 针 2012 年 3 月 16
生 存 期 : 堆 分 配 如 果 对 象 的 生 存 期 有 后 创 建 先 销 毁 的 性 质, 就 可 以 在 运 行 栈 里 分 配 没 有 这 种 性 质 的 对 象 只 能 在 堆 里 分 配 堆 支 持 任 意 顺 序 的 分 配 和 释 放, 最 灵 活 也 最 麻 烦 最 容 易 弄 错 堆 管 理 就 是 平 常 说 的 动 态 存 储 管 理 动 态 存 储 管 理 子 系 统 是 程 序 运 行 系 统 的 一 部 分, 它 管 理 一 片 存 储 区 如 果 有 存 储 申 请, 管 理 系 统 就 从 当 前 可 用 的 空 闲 区 里 分 配 一 块 如 果 无 法 满 足 要 求, 动 态 存 储 管 理 系 统 可 能 向 操 作 系 统 申 请 新 存 储 块, 或 者 直 接 返 回 分 配 失 败 的 信 息 C 标 准 库 的 malloc,pascal 的 new 是 动 态 存 储 管 理 系 统 的 接 口 操 作 堆 的 一 个 场 景 : 2012 年 3 月 17 生 存 期 : 堆 分 配 一 些 语 言 提 供 了 动 态 存 储 块 的 释 放 机 制, 程 序 员 可 以 根 据 需 要 释 放 以 前 分 配 的 块 存 管 系 统 回 收 存 储 块, 将 其 恢 复 为 空 闲 空 间 回 收 时 通 常 需 要 合 并 释 放 块 和 相 邻 空 闲 块, 以 便 满 足 以 后 的 大 块 请 求 人 工 释 放 的 麻 烦 在 于 确 定 正 确 的 释 放 时 刻 在 复 杂 程 序 里 弄 清 正 确 时 刻 对 程 序 员 是 巨 大 负 担, 有 时 可 能 很 难 确 定 堆 对 象 的 使 用 错 误 是 复 杂 程 序 最 常 见 的 一 类 错 误, 易 出 现 且 很 难 排 除 ( 下 面 有 讨 论 ) 自 动 释 放 技 术 方 面, 目 前 主 要 有 两 种 想 法 : 把 堆 对 象 约 束 于 适 当 的 栈 对 象, 借 助 栈 对 象 的 销 毁 自 动 释 放 堆 对 象 设 计 某 种 自 动 机 制, 自 动 回 收 不 再 有 用 堆 存 储 块 (garbage collection) 2012 年 3 月 18
对 象 : 分 类 程 序 对 象 可 以 分 为 很 多 类, 主 要 有 : 变 量 : 有 名 字, 用 于 保 存 值 的 对 象 其 值 在 生 存 期 间 可 以 变 化 常 变 量 : 有 名 字 且 有 值 在 创 建 时 给 定 值, 生 存 期 间 不 变 常 量, 如 建 立 的 字 符 串 等 匿 名 对 象 : 无 名 对 象, 通 过 语 言 提 供 的 其 他 手 段 使 用, 或 隐 含 使 用 通 过 动 态 存 储 分 配 创 建 的 匿 名 对 象, 通 过 指 针 或 者 引 用 使 用 保 存 中 间 结 果 的 临 时 对 象, 如 函 数 的 返 回 值 对 象, 隐 含 使 用 子 程 序 ( 函 数 过 程 ) 对 象 : 使 用 ( 通 常 ) 就 是 执 行 其 代 码 程 序 的 内 部 对 象 ( 由 具 体 的 语 言 确 定 ) 为 支 持 程 序 运 行 而 创 建 的 各 种 内 部 数 据 结 构 ( 运 行 栈, 栈 帧 等 ) 类 型 的 运 行 时 表 示, 等 等 2012 年 3 月 19 对 象 : 分 类 程 序 对 象 可 分 为 简 单 对 象 和 复 合 对 象 简 单 对 象 是 原 子, 不 能 再 分 割 复 合 对 象 里 包 含 一 些 成 分 对 象, 这 些 成 分 对 象 有 自 己 的 标 识, 可 以 独 立 引 用 有 些 情 况 下, 某 些 成 分 对 象 甚 至 可 能 有 自 己 的 独 立 生 存 期 实 例 : 基 本 类 型 的 对 象 通 常 是 原 子 对 象, 代 码 也 应 看 成 是 原 子 对 象 最 常 见 的 复 合 对 象 是 数 组 和 结 构 ( 记 录 ), 它 们 的 成 分 有 自 己 的 标 识, 可 以 独 立 地 访 问 和 使 用 程 序 语 言 通 常 提 供 原 子 对 象 的 字 面 量 描 述 形 式 有 些 语 言 提 供 了 描 述 复 合 对 象 的 值 的 功 能, 以 便 在 程 序 运 行 中 动 态 构 造 复 合 对 象 ( 脚 本 语 言 函 数 式 语 言 通 常 都 提 供 这 方 面 的 功 能,C99 和 Ada 等 语 言 也 提 供 了 这 方 面 功 能 ) 2012 年 3 月 20
对 象 : 类 型 程 序 里 的 对 象 通 常 具 有 固 定 的 类 型 ( 有 例 外 ) 有 类 型 的 变 量 只 能 保 存 特 定 类 型 的 值 其 类 型 决 定 了 该 对 象 在 程 序 里 的 使 用 方 式 一 个 integer 类 型 的 变 量 占 据 若 干 个 字 节 的 存 储, 其 中 保 存 它 的 值, 可 以 在 表 达 式 里 访 问, 其 值 可 以 通 过 赋 值 操 作 修 改 ( 访 问 和 修 改 都 是 使 用 ) 取 两 个 整 型 参 数 返 回 实 型 值 的 函 数 也 是 程 序 对 象, 其 类 型 可 记 为 integer integer real 其 值 就 是 它 的 代 码, 使 用 就 是 执 行 它 的 代 码 它 的 类 型 决 定 了 使 用 它 时 需 要 提 供 两 个 整 型 参 数, 它 返 回 的 是 实 型 值 有 些 语 言 里 存 在 无 类 型 的 对 象 如 许 多 脚 本 语 言 里 的 变 量 没 有 类 型, 可 以 赋 给 它 任 何 类 型 的 值 (Basic 语 言 里 的 情 况 类 似 ) Lisp 等 函 数 式 语 言 里 的 符 号 原 子 ( 类 似 于 变 量 ) 能 以 任 何 东 西 为 值, 同 一 符 号 在 不 同 时 刻 可 以 以 整 数 字 符 串 函 数 等 为 值 2012 年 3 月 21 声 明 与 定 义 名 字 ( 标 识 符 ) 是 程 序 语 言 里 最 基 本 的 抽 象 机 制 需 要 用 名 字 指 称 程 序 中 出 现 的 各 种 东 西 : 变 量 常 量 过 程 / 函 数 结 构 / 记 录 的 成 分 类 型 等 等 名 字 与 事 物 ( 包 括 程 序 对 象 ) 之 间 的 约 束 关 系 由 定 义 或 声 明 建 立 一 个 定 义 或 声 明 引 进 一 个 名 字, 被 定 义 / 声 明 的 事 物 及 相 关 属 性 就 是 该 名 字 的 意 义 该 声 明 / 定 义 建 立 了 名 字 与 相 关 事 物 和 属 性 之 间 的 约 束 关 系 例 :C 声 明 const double x = 3.876; 将 名 字 x 约 束 于 一 个 double 类 型 的 变 量,const 和 值 3.876 为 其 属 性 例 :C 声 明 int fun (int, double); 使 名 字 fun 约 束 于 函 数 类 型 int double int 该 函 数 的 定 义 应 该 具 有 这 种 类 型, 它 的 使 用 必 须 符 合 这 一 类 型 的 要 求 2012 年 3 月 22