一、C语言概述.pdf
《一、C语言概述.pdf》由会员分享,可在线阅读,更多相关《一、C语言概述.pdf(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、C 语 言 概 述 1.C语 言 发 展 过 程 C 语 言 在 19世 纪 7 0年 代 初 问 世,1978年 美 国 电 话 电 报 公 司(A T&T)贝 尔 实 验 室 正 式 发 布 C 语 言,后 由 美 国 国 家 标 准 局(American National Standards In stitu te,简 称 A N S I)制 定 了 一 套 C 语 言 标 准,于 1983年 发 表,通 常 称 之 为 ANSI C。在 学 习 C 语 言 之 前,我 们 先 了 解 一 下 C 语 言 的 历 史。C 语 言 是 一 门 通 用 的,模 块 化,程 序 化 的 编
2、 程 语 言,被 广 泛 应 用 于 操 作 系 统 和 应 用 软 件 的 开 发。由 于 其 高 效 和 可 移 植 性,适 应 于 不 同 硬 件 和 软 件 平 台,深 受 开 发 员 的 青 睐。C 语 言 早 期 发 展 1969-1973年 在 美 国 电 话 电 报 公 司(A T&T)贝 尔 实 验 室 开 始 了 C 语 言 的 最 初 研 发。根 据 C语 言 的 发 明 者 丹 尼 斯 里 奇(Dennis R itchie)说,C 语 言 最 重 要 的 研 发 时 期 是 在 1972年。说 明:丹 尼 斯 里 奇(Dennis Ritchie),C 语 言 之 父
3、,U N IX之 父。1978年 与 布 莱 恩 科 尔 尼 干(Brian Kemighan)一 起 出 版 了 名 著 C 程 序 设 计 语 言(The C Programming Language),现 在 此 书 已 翻 译 成 多 种 语 言,成 为 C 语 言 方 面 最 权 威 的 教 材 之 一。2011年 1 0月 12 E I(北 京 时 间 为 1 0月 1 3日),丹 尼 斯 里 奇 去 世,享 年 7 0岁。C 语 言 之 所 以 命 名 为 C,是 因 为 C 语 言 源 自 Ken Thompson发 明 的 B 语 言,而 B 语 言 则 源 自 BCPL语
4、言。C 语 言 的 诞 生 是 和 UNIX操 作 系 统 的 开 发 密 不 可 分 的,原 先 的 UNIX操 作 系 统 都 是 用 汇 编 语 言 写 的,1973年 UNIX操 作 系 统 的 核 心 用 C 语 言 改 写,从 此 以 后,C 语 言 成 为 编 写 操 作 系 统 的 主 要 语 言。K&RC1978年,丹 尼 斯 里 奇(Dennis Ritchie)和 布 莱 恩 科 尔 尼 干(Brian Kernighan)出 版 了 一 本 书,名 叫 The C Programming Language(中 文 译 名 为 C 程 序 设 计 语 言 这 本 书 被
5、C 语 言 开 发 者 们 称 为“K&R”,很 多 年 来 被 当 作 C 语 言 的 非 正 式 的 标 准 说 明。人 们 称 这 个 版 本 的 C 语 言 为“K&RC”。1988年 丹 尼 斯 里 奇(Dennis Ritchie)和 布 莱 恩 科 尔 尼 干(Brian Kemighan)修 改 此 书,出 版 了 The C Programming Language 第 二 版,第 二 版 涵 盖 了 ANSI C 语 言 标 准。第 二 版 从 此 成 为 大 学 计 算 机 教 育 有 关 C 语 言 的 经 典 教 材,多 年 后 也 没 再 出 现 过 更 好 的 版
6、 本。ANSIC1970到 8 0年 代,C 语 言 被 广 泛 应 用,从 大 型 主 机 到 小 型 微 机,也 衍 生 了 C 语 言 的 很 多 不 同 版 本。为 统 一 C 语 言 版 本,1983年 美 国 国 家 标 准 局(American National Standards In stitu te,简 称 A N S I)成 立 了 一 个 委 员 会,来 制 定 C 语 言 标 准。1989年 C 语 言 标 准 被 批 准,被 称 为 ANSIX3.159-1989 Programming Language C 这 个 版 本 的 C 语 言 标 准 通 常 被 称
7、为 ANSI Co目 前,几 乎 所 有 的 开 发 工 具 都 支 持 ANSI C 标 准。是 C 语 言 用 得 最 广 泛 的 一 个 标 准 版 本。C99在 ANSI C 标 准 确 立 之 后,C 语 言 的 规 范 在 很 长 一 段 时 间 内 都 没 有 大 的 变 动。1995年 C 程 序 设 计 语 言 工 作 组 对 C 语 言 进 行 了 一 些 修 改,成 为 后 来 的 1 9 9 9年 发 布 的 ISO/IEC9899:1999标 准,通 常 被 成 为 C99。但 是 各 个 公 司 对 C 9 9的 支 持 所 表 现 出 来 的 兴 趣 不 同。当
8、G C C和 其 它 一 些 商 业 编 译 器 支 持 C 9 9的 大 部 分 特 性 的 畤 候,微 软 和 Borland却 似 乎 对 此 不 感 兴 趣。说 明:GCC(GNU Compiler Collection,G N U编 译 器 集 合)是 一 套 由 G N U工 程 开 发 的 支 持 多 种 编 程 语 言 的 编 译 器。综 上 所 述,目 前 广 泛 使 用 的 C 语 言 版 本 是 ANSI C,最 经 典 的 C 语 言 教 材 是 C 程 序 设 计 语 言(The C Programming Language)LC 语 言 对 其 它 语 言 的 影
9、响 很 多 编 程 语 言 都 深 受 C 语 言 的 影 响,比 如 C+(原 先 是 C 语 言 的 一 个 扩 展)、C#、Java、PHP、Javascript,Perl、LPC 和 UNIX 的 C Shell 等。也 正 因 为 C 语 言 的 影 响 力,掌 握 C 语 言 的 人,再 学 其 它 编 程 语 言,大 多 能 很 快 上 手,触 类 旁 通,很 多 大 学 将 C 语 言 作 为 计 算 机 教 学 的 入 门 语 言。2.C语 言 工 作 原 理 和 运 行 机 制 可 以 说,所 有 的 编 程 语 言 都 是 一 个 原 理,使 用 人 类 能 读 懂 的
10、语 言 来 编 写 源 代 码(sourcecode),再 利 用 编 译 器 将 源 代 码 翻 译 成 机 器 能 读 懂 的 语 言,称 为 目 标 代 码(object language)。在 计 算 机 底 层 硬 件 中,所 有 的 数 据 都 是 以 1和。两 个 高 低 电 平 来 表 示,计 算 机 只 能 识 别 这 两 个 电 平。编 程 语 言 类 似 于 人 类 语 言,我 们 很 容 易 就 能 理 解 它 的 意 思,编 写 代 码 的 效 率 非 常 高。但 是,计 算 机 只 认 识。和 1,如 何 才 能 将“人 类 语 言”转 换 成“0&1语 言”呢?这
11、 就 是 编 译 器 的 工 作 了。编 译 器 能 够 将 源 代 码(人 类 语 言)翻 译 成 目 标 代 码(0&1语 言),便 于 人 类 和 计 算 机 的 沟 通。可 以 将 目 前 流 行 的 编 程 语 言(如 C 语 言、Java、PH P等)比 喻 成 各 国 语 言(如 英 语、汉 语 和 法 语 等),为 了 表 达 同 一 个 意 思,可 能 使 用 不 同 的 语 言 和 语 句。例 如,表 达“世 界 你 好”的 意 思:汉 语:世 界 你 好;英 语:Hello World 法 语:Bonjour tout le monde在 编 程 语 言 中,输 出“He
12、llo World”:C 语 言:printf(Hello World);PHP:echo Hello World;,Java:System.out.println(HelloWorld!);使 用 C 语 言 开 发 软 件 的 一 般 步 骤 为:使 用 编 辑 器 编 写 源 代 码(source code);使 用 编 译 器 将 源 代 码(source code)编 译 成 目 标 代 码(object language);,运 行 目 标 代 码(object language),即 编 写 好 的 程 序。可 以 看 到,编 译 器 是 编 程 语 言 的 关 键,一 种 编
13、程 语 言,本 质 上 就 是 一 种 编 译 器,编 程 语 言 的 效 率 高 低,取 决 于 编 译 器 转 换 成 的 目 标 代 码 的 效 率 高 低。可 以 这 样 来 理 解 一 门 编 程 语 言:首 先 定 义 好 该 语 言 的 语 法 和 规 范,例 如,如 何 输 入 输 出 数 据,如 何 操 作 文 件 等;按 照 语 法 和 规 范 开 发 编 译 器,这 是 关 键 步 骤;开 发 辅 助 功 能,例 如,调 试 器,编 辑 器 等;向 世 界 公 开 该 语 言。3.C语 言 编 译 器 目 前 流 行 的 C 语 言 编 译 器 主 要 有:说 明【推 荐
14、 使 用】简 称 V C或 者 VC6.0,是 微 软 推 出 的 一 款 C 和 C+编 译 器,具 有 强 大 的 可 视 化 开 发 功 能 和 调 试 功 能。VC6.0是 使 用 最 多 的 版 本,非 常 经 典,很 多 高 校 将 VC6.0 作 为 C 语 言 的 教 学 基 础,也 是 很 多 C 语 言 入 门 学 者 的 不 二 选 择。但 是,VC6.0 对 windows7和 windows8的 兼 容 性 较 差,而 且 运 行 时 稍 显 笨 重。不 过,我 们 应 经 为 您 解 决 了 兼 容 性 问 题,下 载 地 址:校 园 网【推 荐 使 用】Dev C
15、+是 一 个 免 费 C 和 C+开 发 工 具,它 是 一 款 自 由 软 件,遵 守 GPL协 议。开 发 环 境 包 括 多 页 面 窗 口、工 程 编 辑 器 以 及 调 试 器 等,在 工 程 编 辑 器 中 集 合 了 编 辑 器、编 译 器、连 接 程 序 和 执 行 程 序,提 供 高 亮 度 语 法 显 示 的,以 减 少 编 辑 错 误,还 有 完 善 的 调 试 功 能,能 够 适 合 初 学 者 与 编 程 高 手 的 不 同 需 求,是 学 习 C 或 C+的 首 选 开 发 工 具!但 是,Dev C+由 全 球 开 源 爱 好 者 开 发 和 维 护,没 有 专
16、门 的 公 司 对 此 负 责,这 就 给 软 件 的 更 新 和 扩 展 带 来 了 障 碍。下 载 地 址:校 园 网 编 译 器 VisualC+6.0Dev C+Turbo C 是 经 典 的 不 能 再 经 典 的,DOS时 代 优 秀 的 C 语 言 编 程 工 具。Turbo C 的 界 面 分 割 十 分 明 确,调 试 方 便,会 指 出 哪 一 句 语 句 运 行 错 误,在 Message中 给 出 错 误 提 示,方 便 改 正。如 果 调 试 正 确,则 会 在 右 下 角 Turbo C 显 示 程 序 运 行 的 结 果。操 作 简 单,安 装 快 捷 方 便。但
17、 是,TurboC是 D0C界 面 的,用 起 来 非 常 不 爽。不 过 在 最 新 的 的 TurboC 3.0中 增 加 了 对 鼠 标 和 图 形 化 的 支 持。Visual Studio是 微 软 开 发 的 一 套 完 整 的 集 成 开 发 环 境,支 持 C 语 言、,C+、C#、Visual Basic 等 语 言。VisualStudio但 是,visual Studio非 常 笨 重,非 常 复 杂,很 多 功 能 对 于 初 学 者 是 没 有 必 要 的。严 格 的 说,上 面 的 开 发 工 具 不 仅 仅 包 含 了 C 语 言 编 译 器,还 包 含 了 很
18、多 辅 助 功 能,比 如 编 辑 器、代 码 高 亮、调 试 功 能 和 错 误 提 示 等,这 叫 做“集 成 开 发 环 境”。集 成 开 发 环 境(IDE,Integrated Development Environment)是 用 于 提 供 程 序 开 发 环 境 的 应 用 程 序,一 般 包 括 代 码 编 辑 器、编 译 器、调 试 器 和 图 形 用 户 界 面 工 具。集 成 了 代 码 编 写 功 能、分 析 功 能、编 译 功 能、调 试 功 能 等 一 体 化 的 开 发 软 件 服 务 套。C 语 言 ID E的 选 择 是 一 件 纠 结 的 事 情,每 一
19、款 编 辑 器 都 有 各 自 的 优 缺 点,没 有 标 准 的 规 范 可 寻,可 以 根 据 个 人 习 惯 选 择。本 文 推 荐 前 面 两 款 使 用 最 普 遍 的 IDE:V C6.0和 Dev C+。注 意:老 师 的 教 程 基 于 T urboC编 写,但 绝 大 多 数 程 序 在 V C 6.0下 能 够 正 常 运 行,请 大 家 留 意。4.C语 言 的 特 点 早 期 的 C 语 言 主 要 是 用 于 UNIX系 统。由 于 C 语 言 的 强 大 功 能 和 各 方 面 的 优 点 逐 渐 为 人 们 认 识,到 了 八 十 年 代,C 开 始 进 入 其
20、它 操 作 系 统,并 很 快 在 各 类 大、中、小 和 微 型 计 算 机 上 得 到 了 广 泛 的 使 用,成 为 当 代 最 优 秀 的 程 序 设 计 语 言 之 一。1)语 言 简 洁,使 用 方 便 灵 活 C 语 言 是 现 有 程 序 设 计 语 言 中 规 模 最 小 的 语 言 之 一,而 小 的 语 言 体 系 往 往 能 设 计 出 较 好 的 程 序。C 语 言 的 关 键 字 很 少,ANSI C 标 准 一 共 只 有 32个 关 键 字,9种 控 制 语 句,压 缩 了 一 切 不 必 要 的 成 份。C 语 言 的 书 写 形 式 比 较 自 由,表 达
21、方 法 简 洁,使 用 一 些 简 单 的 方 法 就 可 以 构 造 出 相 当 复 杂 的 数 据 类 型 和 程 序 结 构。2)可 移 植 性 好用 过 汇 编 语 言 的 读 者 都 知 道,即 使 是 功 能 完 全 相 同 的 一 种 程 序,对 于 不 同 的 单 片 机,必 须 采 用 不 同 的 汇 编 语 言 来 编 写。这 是 因 为 汇 编 语 言 完 全 依 赖 于 单 片 机 硬 件。而 现 代 社 会 中 新 器 件 的 更 新 换 代 速 度 非 常 快,也 许 我 们 每 年 都 要 跟 新 的 单 片 机 打 交 道。如 果 每 接 触 一 种 新 的 单
22、 片 机 就 要 学 习 一 次 新 的 汇 编 语 言,那 么 也 许 我 们 将 一 事 无 成,因 为 每 学 一 种 新 的 汇 编 语 言,少 则 几 月,多 则 上 年,那 么 我 们 还 有 多 少 时 间 真 正 用 于 产 品 开 发 呢?C语 言 是 通 过 编 译 来 得 到 可 执 行 代 码 的,统 计 资 料 表 明,不 同 机 器 上 的 C语 言 编 译 程 序 80%的 代 码 是 公 共 的,C语 言 的 编 译 程 序 便 于 移 植,从 而 使 在 一 种 单 片 机 上 使 用 的 C语 言 程 序,可 以 不 加 修 改 或 稍 加 修 改 即 可
23、方 便 地 移 植 到 另 一 种 结 构 类 型 的 单 片 机 上 去。这 大 大 增 强 了 我 们 使 用 各 种 单 片 机 进 行 产 品 开 发 的 能 力。3)表 达 能 力 强 c 语 言 具 有 丰 富 的 数 据 结 构 类 型,可 以 根 据 需 要 采 用 整 型、实 型、字 符 型、数 组 类 型、指 针 类 型、结 构 类 型、联 合 类 型、枚 举 类 型 等 多 种 数 据 类 型 来 实 现 各 种 复 杂 数 据 结 构 的 运 算。C语 言 还 具 有 多 种 运 算 符,灵 活 使 用 各 种 运 算 符 可 以 实 现 其 他 高 级 语 言 难 以
24、 实 现 的 运 算。4)表 达 方 式 灵 活 利 用 C语 言 提 供 的 多 种 运 算 符,可 以 组 成 各 种 表 达 式,还 可 采 用 多 种 方 法 来 获 得 表 达 式 的 值,从 而 使 用 户 在 程 序 设 计 中 具 有 更 大 的 灵 活 性。C语 言 的 语 法 规 则 不 太 严 格,程 序 设 计 的 自 由 度 比 较 大,程 序 的 书 写 格 式 自 由 灵 活。程 序 主 要 用 小 写 字 母 来 编 写,而 小 写 字 母 是 比 较 容 易 阅 读 的,这 些 充 分 体 现 了 C语 言 灵 活、方 便 和 实 用 的 特 点。5)可 进
25、行 结 构 化 程 序 设 计 C语 言 是 以 函 数 作 为 程 序 设 计 的 基 本 单 位 的,C语 言 程 序 中 的 函 数 相 当 于 汇 编 语 言 中 的 子 程 序。c 语 言 对 于 输 入 和 输 出 的 处 理 也 是 通 过 函 数 调 用 来 实 现 的。各 种 C语 言 编 译 器 都 会 提 供 一 个 函 数 库,其 中 包 含 有 许 多 标 准 函 数,如 各 种 数 学 函 数、标 准 输 入 输 出 函 数 等。此 外 c 语 言 还 具 有 自 定 义 函 数 的 功 能,用 户 可 以 根 据 自 己 的 需 要 编 制 满 足 某 种 特 殊
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 概述
限制150内