计算机二级C语言考点解析.pdf
计 算 机 二 级 C 语 言 考 点 解 析 i.i c 语 言 的 特 点 C 语 言 是 近 年 来 非 常 流 行 的 语 言,很 多 人 宁 愿 放 弃 已 经 熟 悉 的 其 他 语 言 而 改 用 C 语 言,其 原 因 是 C 语 言 有 优 于 其 他 语 言 的 一 系 列 特 点。下 面 是 C 语 言 的 主 要 特 点:(1)语 言 简 洁、紧 凑,并 且 使 用 方 便、灵 活;(2)运 算 符 丰 富;(3)数 据 结 构 丰 富;(4)具 有 结 构 化 的 控 制 语 句;(5)语 法 限 制 不 太 严 格,使 程 序 设 计 比 较 自 山;(6)C语 言 允 许 用 户 直 接 访 问 物 理 地 址,能 进 行 位(bit)操 作,可 以 直 接 对 硬 件 进 行 操 作。1.2 源 程 序 的 书 写 规 则 C 语 言 的 书 写 规 则。C 语 言 书 写 格 式 自 由,一 行 内 可 以 写 几 个 语 句,一 个 语 句 也 可 以 分 写 在 多 行 上。C 程 序 没 有 行 号,每 个 语 句 和 数 据 定 义 的 最 后 必 须 有 一 个 分 号。C 语 言 中 分 号 是 语 句 中 不 可 少 的,即 使 是 程 序 中 的 最 后 一 个 语 句 也 应 该 包 含 分 号。C 语 言 中 的 注 释 可 以 用 用*/,结 束,注 释 可 以 在 任 何 允 许 插 入 空 格 符 地 方 插 入。C 语 言 中 注 释 不 允 许 嵌 套,注 释 可 以 用 西 文,也 可 以 用 中 文。1.3 C 语 言 的 风 格 由 于 C 语 言 对 语 法 限 制 不 太 严 格,为 了 保 证 程 序 的 准 确 性 和 可 读 性,建 议 在 书 写 程 序 采 用 阶 梯 缩 进 格 式。也 就 是 按 如 下 格 式 书 写 C 语 言 程 序:9*()|*.(*.*,概 括 起 来,C 语 言 程 序 具 有 如 下 的 风 格:C 语 言 程 序 的 函 数 具 体 模 块 结 构 风 格,使 得 程 序 整 体 结 构 清 晰、层 次 清 楚,为 模 块 化 程 序 设 计 提 供 了 强 有 力 的 支 持。C 语 言 的 源 程 序 的 扩 展 名 都 是.C。C 语 言 中 的 注 释 格 式 为:/*注 释 内 容*/与*之 间 不 允 许 有 空 格,注 释 部 分 允 许 出 现 在 程 序 中 的 任 何 位 置。C 语 言 中 的 所 有 语 句 都 必 须 以 分 号“;”结 束。2.1程 序 的 构 成 尽 管 C 程 序 的 内 容 千 变 万 化,但 是 它 们 的 构 成 都 是 一 致 的,一 个 完 整 的 C 源 程 序 的 格 式 可 以 如 下 表 示:编 译 预 处 理 主 函 数()函 数()函 数 0从 上 面 中 可 以 看 出,一 个 C 源 程 序 实 际 上 就 是 若 干 函 数 的 集 合,这 些 函 数 中 有 一 个 是 程 序 的 主 函 数,任 何 C 的 源 程 序 执 行 时,都 是 从 主 函 数 开 始 执 行 的,其 它 的 函 数 最 终 必 将 被 这 个 主 函 数 所 调 用。C 语 言 除 了 主 函 数 规 定 必 须 取 名 main外,其 它 的 函 数 名 可 以 任 取,但 是 要 符 合 C 的 标 识 符 取 名 规 则,另 外 注 意 不 要 与 保 留 字 重 名,最 好 也 不 可 与 C 语 言 中 的 库 函 数 或 其 它 一 些 命 令 如 编 译 预 处 另 命 令 重 名。各 个 函 数 在 程 序 中 所 处 的 位 置 并 不 是 固 定 的,但 要 求 一 个 函 数 是 完 整 的、独 立 的。不 允 许 出 现 在 一 个 函 数 内 部 又 去 定 义 另 一 个 函 数,或 是 函 数 格 式 不 齐 全 的 现 象。一 个 完 整 的 一 般 意 义 上 的 函 数 有 一 个 固 定 的 框 架,编 写 具 体 的 函 数 时,只 需 在 这 个 框 架 中 填 入 相 应 的 内 容 即 可。框 架 如 下:函 数 类 型 函 数 名(形 参)形 参 说 明(内 部 变 量 说 明;执 行 语 句 部 分;I2.2 C语 言 的 基 本 词 法 C 语 言 的 基 本 词 法 由 三 部 分 组 成:符 号 集、关 键 字、保 留 字。符 号 集 就 是 一 门 语 言 中 允 许 出 现 的 字 符 的 集 合,C 语 言 的 符 号 集 就 是 A S C H码 表 中 的 一 些 字 符,在 键 盘 上 不 能 直 接 得 至 1 1(比 如 说 响 铃 字 符),C 语 言 引 入 了 转 义 字 符 的 概 念,利 用 反 斜 杠 符 号 后 加 上 字 母 的 一 个 字 符 组 合 来 表 示 这 些 字 符,当 在 源 程 序 中 遇 到 这 类 字 符 组 合 时,虽 然 这 个 字 符 组 合 是 一 个 字 符 串 的 形 式,但 C 语 言 仍 会 自 动 将 之 理 解 成 某 一 特 定 的 字 符。比 如 C 语 言 在 处 理 这 个 字 符 组 合 时,会 自 动 理 解 成 回 车 换 行 符 号。转 义 字 符 经 过 进 一 步 引 申 应 用,形 成 了 另 外 两 种 形 式:ddd和 x n n,这 里 后 的 ddd和 xnn分 别 代 表 三 位 八 进 制 和 两 位 十 六 进 制 数(打 头 的 x只 是 标 明 后 面 跟 着 的 是 十 六 进 制 数),这 两 种 形 式 不 再 局 限 于 表 示 不 可 打 印 的 字 符,它 们 可 以 表 示 A S C H码 表 中 的 任 意 字 符,只 要 把 所 需 表 示 的 字 符 的 A S C II码 转 换 成 八 进 制 数 或 十 六 进 制 数 即 可。比 如 说 字 母 A,A S C H码 为65,6 5的 八 进 制 和 十 六 进 制 分 别 为 101和 x 4 1,所 以,字 母 A 可 表 示 为 或 x 4 1,对 转 义 字 符 应 认 真 理 解。标 识 符 就 是 用 以 标 识 的 符 号。正 如 现 实 生 活 中 给 每 一 个 人 都 取 一 个 名 字 一 样,C 语 言 中 的 每 一 个 对 象(如 函 数、变 量 等)都 必 须 取 一 个 标 识 符 以 和 其 它 对 象 区 别 开。在 C 语 言 中,这 个 标 识 符 是 个 字 符 串,这 个 字 符 串 的 选 定 有 一 定 的 规 则:必 须 是 以 字 母 或 下 划 线 开 头 的 字 母 与 数 字 的 序 列。除 了 这 个 基 本 的 规 则 外,C 语 言 对 标 识 符 的 命 名 还 有 几 个 限 制 需 加 以 注 意:长 度 最 好 不 要 超 过 八 个 字 符。因 C 中 对 标 识 符 只 处 理 前 8 个 字 符,超 过 8 个 长 度 的 部 分 将 被 C 自 动 忽 略 掉。ABCDEFGH1和 ABCDEFH2是 同 一 个 标 识 符;标 识 符 不 要 与 保 留 字 同 名,最 好 也 不 要 与 C 提 供 的 标 准 标 识 符,如 库 函 数 重 名;应 注 意 C 语 言 对 大 小 写 字 母 是 敏 感 的,A bed和 abed是 两 个 不 同 的 标 识 符。关 键 字 实 际 上 就 是 一 些 特 殊 的 标 识 符,又 称 保 留 字,这 些 保 留 字 不 允 许 用 户 对 它 重 新 定 义。3.1 表 达 式 语 句、函 数 调 用 语 句 和 空 语 句 L C语 言 的 语 句 共 分 五 大 类:表 达 式 语 句、控 制 语 句、函 数 调 用 语 句、空 语 句 和 复 合 语 句。2.表 达 式 语 句 的 一 般 形 式 为 表 达 式:最 典 型 的 表 达 式 语 句 是 由 一 个 赋 值 表 达 式 加 一 个 分 号 构 成 的 赋 值 语 句。3.控 制 语 句 是 C 语 言 程 序 设 计 中 用 来 构 成 分 支 结 构 和 循 环 结 构 的 语 句。此 类 语 句 有 if语 句,fb r语 句,w hile语 句,do-while语 句,switch语 句 等。4.函 数 调 用 语 句 的 般 形 式 为 函 数 名(实 参 表);5.空 语 句 的 一 般 形 式 为 这 条 语 句 的 含 义 是 什 么 也 不 做。凡 是 在 c 语 句 程 序 中 出 现 语 句 的 地 方 都 可 以 用 一 个 分 号 来 代 替 一 条 语 句。6.复 合 语 句 的 一 般 形 式 为 语 句 1;语 句 2;)复 合 语 句 在 功 能 上 相 当 于 一 条 语 句。3.2数 据 的 输 入 与 输 出,输 入 输 出 函 数 的 调 用 L C语 言 本 身 没 有 提 供 输 入、输 出 操 作 语 句。C 程 序 的 输 入 和 输 出 完 全 依 靠 调 用 C 语 言 的 标 准 输 入、输 出 函 数 来 完 成。四 个 常 用 的 输 入、输 出 函 数 是:printf 函 数、scanf 函 数、putchar 函 数、getchar 函 数 2.printf函 数 是 C 语 言 提 供 的 标 准 输 出 函 数,它 的 作 用 是 在 终 端 设 备(或 系 统 隐 含 指 定 的 输 出 设 备)上 按 指 定 格 式 进 行 输 出。Printf函 数 的 般 调 用 形 式 如 下:printf(格 式 控 制,输 出 项 表)如 果 在 printf函 数 调 用 之 后 加 上;,就 构 成 了 输 出 语 句。格 式 控 制 参 数 以 字 符 串 的 形 式 描 述,由 两 部 分 组 成:普 通 字 符:将 被 简 单 地 显 示;格 式 字 符:将 引 起 一 个 输 出 参 数 项 的 转 换 和 显 示,山”引 出 并 以 一 个 类 型 描 述 符 结 束 的 字 符 串,中 间 可 加 一 些 可 选 的 附 加 说 明 项,如 下 表 所 示 0附 加 说 明 项 附 加 说 明 项 说 明-或+用 于 指 定 是 否 对 齐 输 出,具 有 符 号 表 示 左 对 齐,无 或 有+表 示 右 对 齐 0 用 于 指 定 是 否 填 写 0,有 此 项 表 示 空 位 用 0 补 充,无 此 项 表 示 以 空 格 补 充 m.n用 于 指 定 输 出 域 宽 及 精 度,m 是 指 域 宽,n 为 精 度,当 指 定 n 时,隐 含 的 精 度 为 6位 L 或 h 用 于 输 出 长 度 修 正。其 中,1对 于 整 型 是 指 lo n g,对 实 型 是 doubled只 用 于 整 型 的 格 式 字 符,并 修 正 为 short型 格 式 字 符 用 于 指 定 输 出 项 的 数 据 类 型 及 输 入 格 式,如 下 表 所 示。4.1 用 i f语 句 实 现 选 择 结 构 1.在 C 语 言 中,i f语 句 有 两 种 形 式:形 式 1:if(表 达 式)语 句 形 式 2:if(表 达 式)语 句 1else语 句 22.i f 语 句 执 行 时,首 先 计 算 紧 跟 在 i f后 面 一 对 圆 括 号 中 的 表 达 式 的 值,如 果 表 达 式 的 值 为 非 零(真),则 执 行 i f后 的 语 句,然 后 去 执 行 i f语 句 后 的 下 个 语 句。如 果 表 达 式 的 值 为 零(假),直 接 执 行 i f语 句 后 的 下 一 个 语 句。3.if语 句 后 面 的 表 达 式 并 不 限 于 是 关 系 表 达 式 或 逻 辑 表 达 式,而 可 以 是 任 意 表 达 式。If语 句 中 可 以 再 嵌 套 i f语 句。C 语 言 规 定,在 嵌 套 的 i f语 句 中,else子 句 总 是 与 前 面 最 近 的 不 带 else的 i f相 结 合。4.2用 switch语 句 实 现 多 分 支 选 择 结 构 Lswitch语 句 是 用 来 处 理 多 分 支 选 择 的 一 种 语 句。它 的 一 般 形 式 如 下:switch(表 达 式)c a se常 量 表 达 式 1:语 句 Icase常 量 表 达 式 2:语 句 2case常 量 表 达 式 n:语 句 ndefault:语 句 n+1)2.switch语 句 的 执 行 过 程 是:首 先 计 算 紧 跟 switch后 面 的 对 圆 括 号 中 的 表 达 式 的 值,当 表 达 式 的 值 与 某 个 case后 面 的 常 量 表 达 式 的 值 相 等 时,就 执 行 此 case后 面 的 语 句 体 并 将 流 程 转 移 到 下 一 个 case继 续 执 行,直 至 switch语 句 的 结 束;若 所 有 的 case中 的 常 量 表 达式 的 值 都 没 有 与 表 达 式 值 匹 配,又 存 在 default,则 执 行 default后 面 的 语 句,直 至 switch语 句 结 束;如 果 不 存 在 d e fa u lt,则 跳 过 switch语 句 体,什 么 也 不 做。4.3选 择 结 构 的 嵌 套 i f语 句 和 switch语 句 都 可 以 嵌 套 使 用,特 别 要 注 意,对 于 构 成 嵌 套 的 i f语 句,else子 句 总 是 和 离 它 最 近 的、不 带 else的 i f子 句 相 匹 配,不 能 弄 混;在-,个 switch语 句 中 的 case后 面 又 嵌 套 了 一 个 switch语 句,在 执 行 内 嵌 的 switch语 句 后 还 要 执 行 一,条 break语 句 才 跳 出 外 层 的 switch语 句。5.1 for循 环 结 构 1.for循 环 语 句 的 一 般 表 达 式 是:fbr(表 达 式 1;表 达 式 2;表 达 式 3)语 句 2.C语 言 语 法 规 定:循 环 体 语 句 只 能 包 含 一 条 语 句,若 需 多 条 语 句,应 使 用 复 合 语 句。5.2 while和 do while循 环 结 构 l.w hile语 句 用 来 实 现 当 型 循 环 结 构,它 的 一 般 形 式 如 下:while(表 达 式)语 句 当 表 达 式 为 非 0 值 时 执 行 w hile语 句 中 内 嵌 的 语 句;当 表 达 式 的 值 为 0 时,直 接 跳 过 while语 句 后 面 的 语 句,执 行 下 一 条 语 句。2.while语 句 执 行 的 特 点 是:先 判 断 表 达 式,后 执 行 语 句。3.do w hile用 来 实 现 直 到 型 循 环 结 构,它 的 一 般 形 式 为:d o语 句 while(表 达 式);这 个 语 句 执 行 时,先 执 行 一 次 指 定 的 内 嵌 的 语 句,然 后 判 别 表 达 式,当 表 达 式 的 值 为 非 0 时,返 回 重 新 执 行 该 语 句,如 此 反 复,直 到 表 达 式 的 值 为 等 于 0 为 止,此 时 循 环 结 束。4.do while语 句 执 行 的 特 点 是:先 执 行 语 句,后 判 断 表 达 式。5.3 continue 语 句 和 break 语 句 1.break语 句 有 两 个 用 途:在 switch语 句 中 用 来 使 流 程 跳 出 switch结 构,继 续 执 行 switch语 句 后 面 的 语 句;用 在 循 环 体 内,迫 使 所 在 循 环 立 即 终 止,即 跳 出 所 在 循 环 体,继 续 执 行 循 环 体 后 面 的 第 一 条 语 句。2.continue语 句 结 束 本 次 循 环,即 跳 过 循 环 体 中 尚 未 执 行 的 语 句。在 w hile和 do while语 句 中,continue语 句 将 使 控 制 直 接 转 向 条 件 测 试 部 分,从 而 决 定 是 否 继 续 转 向 循 环。在 for循 环 中,遇 到 continue语 句 后,首 先 计 算 fo r语 句 表 达 式 3 的 值,然 后 再 执 行 条 件 测 试(表 达 式 2),最 后 根 据 测 试 结 果 来 决 定 是 否 继 续 转 向 fo r循 环。5.4循 环 的 嵌 套 1.一 个 循 环 体 内 又 包 含 另 一 个 完 整 的 循 环 结 构,称 为 循 环 的 嵌 套。内 嵌 的 循 环 中 还 可 以 嵌 套 循 环,这 就 是 多 层 循 环。2.三 种 循 环(while循 环、do w hile循 环 和 fo r循 环)可 以 互 相 嵌 套。6.1字 符 常 量有 两 种 形 式:是 用 单 引 号 括 起 来 的 一 个 单 字 符,如 7,,=,;二 是 转 义 字 符,即 以 开 头 的 字 符 序 列。常 用 的 转 义 字 符 见 下 表。字 符 形 式 功 能 n 换 行 t 横 向 跳 格(即 跳 到 下 一 个 输 出 区)v 竖 向 跳 格 b 退 格 r 回 车 f 走 纸 换 页 反 斜 杠 字 符 单 引 号(撇 号)字 符 双 引 号()字 符 d d d 1到 3 位 8 进 制 数 所 代 表 的 字 符,如 1 2 3,表 示 8 进 制 数 123x h h 1到 2 位 16进 制 数 所 代 表 的 字 符,如 x 2 1,表 示 16进 制 数 23在 转 义 字 符 赋 给 字 符 变 量 时,也 需 要 在 其 二 侧 加 单 引 号,如:char c-n;字 符 串 常 量 是 用 对 双 引 号 括 起 的 字 符 序 列,如 a b c n。请 区 别 字 符 变 量 和 字 符 串 常 量。W是 字 符 常 量,a是 字 符 串 常 量。在 内 存 中,字 符 常 量 占 一 个 字 节,而 对 字 符 串 常 量,则 在 字 符 串 的 后 面 加 一 个 字 符 串 结 束 标 志,以 便 系 统 据 此 判 断 字 符 串 是 否 结 束。用 0(即 ASCH代 码 为。的 字 符,即 空 字 符)作 为 字 符 串 结 束 的 标 志。例 如,尔 内 存 占 两 个 字 节,即:a 0 o6.2字 符 变 量 字 符 变 量 用 来 存 放 一 个 字 符 常 量,字 符 变 量 用 char来 定 义。如:char a,b;a=O;b=k;printfT%c%c n a,b);将 输 出 两 个 字 符。k。不 能 将 一 个 字 符 串 常 量 赋 给 一 个 字 符 变 量,如:a=O;b=%;是 错 误 的。给 字 符 变 量 赋 值 可 以 采 用 如 下 三 种 方 法:(1)直 接 赋 以 字 符 常 量,如 char=A,;赋 以 转 义 字 符”,如:char c-printf(%c,c);输 出 一 个 字 符,(3)赋 以 一 个 字 符 的 ASCH代 码,如 字 符 的 ASCII代 码 为 9 7,则char c=97;printfT%c,c);将 输 出 一 个 字 符 a。实 际 上,字 符 数 据 在 内 存 中 是 以 整 数 形 式(字 符 ASCII代 码)存 放 的,例 如,字 符 T 的 ASCH码 为 9 7,在 内 存 字 节 中 的 存 放 形 式 为:01 10 00 01在 输 出 时,如 果 指 定 输 出 字 符 的 格 式 符 c输 出,则 输 出 字 符 尔(在 输 出 时 先 将 ASCH码 转 换 为 字 符)。如 果 指 定 按 输 出 整 数 的 格 式 d输 出(如 printf(%d,c),则 输 出 一 个 整 数 97 o应 记 住,字 符 数 据 与 整 型 数 据 二 者 间 是 通 用 的,可 以 互 相 赋 值 和 运 算,如:int a=A;char c=97;print(%d n,c-a);将 输 出 一 个 整 数 3 2,因 为 A 的 ASCH码 为 65。7.1库 函 数 的 正 确 调 用 L C语 言 提 供 了 丰 富 的 库 函 数,包 括 常 用 数 学 函 数、对 字 符 和 字 符 串 处 理 函 数、输 入 输 出 处 理 函 数 等。在 调 用 库 函 数 时 要 注 意 以 下 几 点:(1)调 用 C 语 言 标 准 库 函 数 忖 必 须 在 源 程 序 中 用 include命 令,include命 令 的 格 式 是:include头 文 件 名 include命 令 必 须 以#号 开 头,系 统 提 供 的 头 文 件 名 都 以.h作 为 后 缀,头 文 件 名 用 一 对 双 引 号 或 一 对 尖 括 号 括 起 来。(2)标 准 库 函 数 的 调 用 形 式:函 数 名(参 数 表)2.在 C 语 言 中 库 函 数 的 调 用 可 以 以 两 种 形 式 出 现:出 现 在 表 达 式 中:作 为 独 立 的 语 句 完 成 某 种 操 作。7.2函 数 的 定 义 方 法 L C语 言 函 数 的 一 般 形 式 为:函 数 返 回 值 的 类 型 名 函 数 名(类 型 名 形 参 1,类 型 名 形 参 2,)(说 明 部 分 语 句 部 分 定 义 的 第 一 行 是 函 数 的 首 部,中 的 是 函 数 体。2.在 老 的 C 语 言 版 本 中,函 数 的 首 部 用 以 卜 形 式:函 数 返 回 值 的 类 型 名 函 数 名(形 参 1,形 参 2)形 参 类 型 说 明;新 的 AN SI标 准 C 兼 容 这 种 形 式 的 函 数 首 部 说 明。3.函 数 名 和 形 参 名 是 由 用 户 命 名 的 标 识 符。在 同 一 程 序 中,函 数 名 必 须 唯-o 形 式 参 数 名 只 要 在 同 一 函 数 中 唯 一 即 可,可 以 与 函 数 中 的 变 量 同 名。4.C语 言 规 定 不 能 在 一 个 函 数 内 部 再 定 义 函 数。5.若 在 函 数 的 首 部 省 略 了 函 数 返 回 值 的 类 型 名,把 函 数 的 首 部 写 成:函 数 名(类 型 名 形 参 1,类 型 名 形 参 2,)则 C 默 认 函 数 返 回 值 的 类 型 为 int类 型。6.当 没 有 形 参 时,函 数 名 后 面 的 一 对 圆 括 号 不 能 省 略。8.1 指 针 与 指 针 变 量 的 概 念,指 针 与 地 址 运 算 符 1.在 C 语 言 中,指 针 是 指 一 个 变 量 的 地 址,通 过 变 量 的 地 址 指 向 的 位 置 找 到 变 量 的 值,这 种 指 向 变 量 地 址 可 形 象 地 看 作 指 针。用 来 存 放 指 针 的 变 量 称 为 指 针 变 量,它 是 一 种 特 殊 的 变 量,它 存 放 的 是 地 址 值。2.定 义 指 针 变 量 的 一 般 形 式 为:类 型 名*指 针 变 量 1,*指 针 变 量 2,;类 型 名 称 为 基 类 型”它 规 定 了 后 面 的 指 针 变 量 中 存 放 的 数 据 类 型,*号 表 明 后 面 的 指 针 变 量 1,指 针 变 量 2等 是 指 针 变 量,*号 在 定 义 时 不 能 省 略,否 则 就 会 变 成 般 变 量 的 定 义 了。指 针 变 量 1,指 针 变 量 2”等 称 为 指 针 变 量 名。3.一 个 指 针 变 量 只 能 指 向 同 一 类 型 的 变 量。4.与 指 针 和 指 针 变 量 有 关 的 两 个 运 算 符:(1)*:指 针 运 算 符(或 称 间 接 访 问 运 算 符)(2)&:取 地 址 运 算 符 通 过*号 可 以 引 用 一 个 存 储 单 元,如 有 如 下 定 义:int i=123,*p,k;则 p=&I;或 k=*p;或 k=*&I;都 将 变 量 i中 的 值 赋 给 k*p=10;或*&i=10;都 能 把 整 数 10赋 给 变 量 i。这 里,等 号 左 边 的 表 达 式*p 和*&i 都 代 表 变 量 i的 存 储 单 元。8.2变 量、数 组、字 符 串、函 数、结 构 体 的 指 针 以 及 指 向 它 们 的 指 针 变 量 1.变 量 的 指 针 和 指 向 变 量 的 指 针 变 量。2.数 组 的 指 针 和 指 向 数 组 的 指 针 变 量。所 谓 数 组 的 指 针 是 指 数 组 的 起 始 地 址,数 组 元 素 的 指 针 是 数 组 元 素 的 地 址。C 语 言 规 定 数 组 名 代 表 数 组 的 首 地 址,也 就 是 第 一 个 元 素 的 地 址。3.字 符 串 的 指 针 和 指 向 字 符 串 的 指 针 变 量。我 们 可 以 通 过 定 义 说 明 一 个 指 针 指 向 一 个 字 符 串。C 语 言 将 字 符 串 隐 含 处 理 成 一 维 字 符 数 组,但 数 组 的 每 个 元 素 没 有 具 体 的 名 字,这 一 点 跟 字 符 数 组 不 一 样。要 引 用 字 符 串 中 的 某 个 字 符,只 能 通 过 指 针 来 引 用:*(s+0),*(s+1*(s+n)o4.函 数 的 指 针 和 指 向 函 数 的 指 针 变 量。指 向 函 数 的 指 针 变 量 的 般 形 式 为:数 据 类 型 标 识 符(*指 针 变 量 名)0;这 里 的 数 据 类 型 标 识 符”是 指 函 数 返 回 值 的 类 型。函 数 的 调 用 可 以 通 过 函 数 名 调 用,也 可 以 通 过 函 数 指 针 调 用(即 用 指 向 函 数 的 指 针 变 量 调 用)。指 向 函 数 的 指 针 变 量 表 示 定 义 了 个 指 向 函 数 的 指 针 变 量,它 不 是 固 定 指 向 哪 一 个 函 数,而 只 是 定 义 了 这 样 的 一 个 类 型 变 量,它 专 门 用 来 存 放 函 数 的 入 口 地 址。在 程 序 中 把 哪 个 函 数 的 地 址 赋 给 它,它 就 指 向 哪 一 个 函 数。在 一 个 程 序 中,一 个 指 针 变 量 可 以 先 后 指 向 不 同 的 函 数。在 给 函 数 指 针 变 量 赋 值 时,只 需 给 出 函 数 名 而 不 必 给 出 参 数。因 为 函 数 指 针 赋 的 值 仅 是 函 数 的 入 口 地 址,而 不 涉 及 到 实 参 与 形 参 的 结 合 问 题。对 指 向 函 数 的 指 针 变 量,表 达 式 p+n,p+,p-等 都 无 意 义。5.结 构 体 的 指 针 与 指 向 结 构 体 的 指 针 变 量 一 个 结 构 体 变 量 的 指 针 就 是 该 变 量 所 占 据 的 内 存 段 的 起 始 地 址。可 以 设 一 个 指 针 变 量,用 来 指 向 一 个 结 构 体 变 量,此 时 该 指 针 变 量 的 值 是 结 构 体 变 量 的 起 始 地 址。指 针 变 量 也 可 以 用 来 指 向 结 构 体 数 组 中 的 元 素。8.3 用 指 针 做 函 数 参 数 函 数 的 参 数 不 仅 可 以 是 整 型、实 型、字 符 型 等 数 据,还 可 以 是 指 针 类 型,它 的 作 用 是 将 一 个 变 量 的 地 址 传 送 到 另 一 个 函 数 中。8.4 返 回 指 针 值 的 指 针 函 数 一 个 函 数 可 以 返 回 个 整 型 值、字 符 值、实 型 值 等,也 可 以 返 回 指 针 型 数 据,即 地 址 这 种 带 回 指 针 值 的 函 数,一 般 的 定 义 形 式 为:类 型 标 识 符*函 数 名(形 参 表):9.1 一 维 数 组 的 定 义、初 始 化 和 引 用 1.一 维 数 组 的 定 义 方 式 为:类 型 说 明 符 数 组 名 常 量 表 达 式(1)数 组 名 的 命 名 方 法 与 变 量 名 相 同,遵 循 标 识 符 命 名 规 则;(2)数 组 是 用 方 括 号 括 起 来 的 常 量 表 达 式,不 能 用 圆 括 号;(3)常 量 表 达 式 表 示 数 组 元 素 的 个 数,即 数 组 的 长 度,数 组 的 下 标 从 0 开 始,下 标 的 最 大 值 为:常 量 表 达 式-1;(4)常 量 表 达 式 中 可 以 包 括 常 量 和 符 号 常 量,不 能 包 括 变 量。可 以 用 赋 值 语 句 或 输 入 语 句 使 数 组 中 的 元 素 得 到 值,但 要 占 用 运 行 时 间。可 以 使 数 组 在 运 行 之 前 初 始 化,即 在 编 译 阶 段 使 之 得 到 初 值。2.对 数 组 初 始 化 可 以 用 以 下 方 法 实 现:(1)在 定 义 数 组 时 对 数 组 元 素 赋 以 初 值。如:static int a 10=0,12,3,4,5,6,7,8,9;经 过 上 面 的 定 义 和 初 始 化 后,a 0=0,a 1=l,.,a 9=9。(2)初 始 化 时 可 以 只 为 部 分 元 素 赋 初 值。例 如:static int a 10=0,1,2,3,4);定 义 的 数 组 有 10个 元 素,但 只 对 其 中 前 5 个 元 素 赋 了 初 值,后 5 个 元 素 初 值 为 0。(3)如 果 想 使 一 个 数 组 的 元 素 值 全 部 为 0,可 以 用 下 面 的 方 法:static int a 10=0,0,0,0,0,0,0,0,0,0;不 能 用:static int a 10=0*1 0;如 果 对 static型 数 组 不 赋 初 值,系 统 会 对 定 义 的 所 有 数 组 元 素 自 动 赋 以 0 值。(4)在 对 全 部 数 组 元 素 赋 初 值 时,可 以 不 指 定 数 组 长 度。3.一 维 数 组 的 引 用 方 法 是:C 语 言 规 定 不 能 一 次 引 用 整 个 数 组,引 用 时 只 能 逐 个 元 素 引 用,数 组 元 素 的 表 示 形 式 为:数 组 名 下 标 下 标 可 以 是 整 型 常 量 或 整 型 表 达 式。如:a 0=a 5+a-a 2*3;9.2二 维 数 组 的 定 义、初 始 化 和 引 用 1.二 维 数 组 定 义 的 一 般 形 式 为 类 型 说 明 符 数 组 名 常 量 表 达 式 常 量 表 达 式 C 语 言 采 用 上 述 定 义 方 法,我 们 可 以 把 二 维 数 组 看 做 是 一 种 特 殊 的 一 维 数 组:它 的 元 素 又 是 一 维 数 组。在 C 语 言 中,二 维 数 组 中 元 素 的 排 列 顺 序 是:先 按 行 存 放,再 按 列 存 放,即 在 内 存 中 先 顺 序 存 放 第 一 行 的 元 素,再 存 放 第 二 行 的 元 素。2.二 维 数 组 的 初 始 化:二 维 数 组 可 以 用 下 面 的 方 法 初 始 化:(1)分 行 给 二 维 数 组 赋 初 值。如:static int a 3 4=1,2,3,4,5,6,7,8,9,10,11,12);以 上 赋 值 把 第 一 个 花 括 号 内 的 数 据 赋 给 第 一 行 元 素,第 二 个 花 括 号 内 数 据 赋 给 第 二 元 素,即 按 行 赋 值。(2)可 以 将 所 有 的 数 据 写 在 一 个 花 括 号 内,按 数 组 排 列 的 顺 序 对 各 元 素 赋 值。(3)可 以 对 数 组 的 部 分 元 素 赋 初 值。如:static int a 3 4=1,5,9);以 上 赋 值 的 结 果 是:数 组 第 一 列 的 元 素 分 别 赋 了 初 值 1,5,9,其 余 元 素 的 值 都 是 0。(4)如 果 对 二 维 数 组 的 全 部 元 素 都 赋 初 值,则 定 义 数 组 时 对 第 一 维 的 长 度 可 以 不 指 定,但 第 二 维 的 长 度 不 能 省。3.二 维 数 组 的 引 用:二 维 数 组 的 元 素 可 以 表 示 为:数 组 下 标 下 标 在 引 用 二 维 数 组 时,必 须 是 单 个 元 素,不 能 是 整 个 数 组 名。下 标 可 以 是 一 个 表 达 式,但 不 能 是 变 量。如 果 下 标 是 一 个 表 达 式,注 意 表 达 式 的 值 不 能 超 出 数 组 定 义 的 上、下 限。10.1 字 符 串 与 字 符 数 组 1.字 符 数 组 的 定 义 定 义 方 法 与 前 面 介 绍 的 类 似,只 是 将 数 组 定 义 为 字 符 型 即 可。例 如:char c 1 0;这 里 定 义 了 个 包 含 10个 元 素 的 字 符 数 组 C o2.字 符 数 组 的 初 始 化 对 字 符 数 组 初 始 化,可 以 采 用 以 下 方 法:(1)逐 个 字 符 赋 给 数 组 中 各 元 素:(2)用 字 符 串 常 量 使 字 符 数 组 初 始 化。3.字 符 串 在 C 语 言 中,字 符 串 是 作 为 字 符 数 组 来 处 理 的,字 符 串 可 以 存 放 在 字 符 型 一 维 数 组 中,故 可 以 把 字 符 型 一 维 数 组 作 为 字 符 串 变 量。字 符 串 常 量 是 用 双 引 号 括 起 来 的 一 串 字 符。C 语 言 中 约 定 用,0,作 为 字 符 串 的 结 束 标 志,它 占 内 存 空 间,但 不 计 入 串 的 长 度,0,的 代 码 值 为 0o系 统 对 字 符 串 常 量 也 自 动 加 一 个 0 作 为 结 束 符。例 如 c山 nguage共 有 10个 字 符,但 在 内 存 中 占 11个 字 节,最 后 一 个 字 节 存 放 4.字 符 数 组 的 输 入 输 出(1)逐 个 字 符 输 入 和 输 出 在 标 准 输 入 输 出 printf和 scanf中 使 用 c 格 式 描 述 符;使 用 getchar和 putchar函 数。例 如:for(i=0;i10;i+)scanf(%c,&str i);/*或 str i=getchar();*/str i=,0,;/*人 为 加 上 串 结 束 标 志*/fbr(i=0;i10;i+)printf(%c,str i);/*或 putchar(str i);*/(2)字 符 串 整 体 输 入 输 出 在 标 准 输 入 输 出 函 数 printf和 scanf中 使 用 s 格 式 描 述 符;输 入 形 式:char str 6;scanf(%s,str);其 中 s tr为 字 符 数 组 名,代 表 着 s tr字 符 数 组 的 起 始 地 址,输 入 时 系 统 自 动 在 每 个 字 符 串 后 加 入 结 束 符 0。若 同 时 输 入 多 个 字 符 串,则 以 空 格 或 回 车 符 分 隔。输 入 形 式:printf(%s,s