c++primer plus 第七章 函数

函 数 是 c + + 的 编 程 模 块 。 要使 用 函 数 , 必 须 提 供 定 义 和 原 型 , 并 调 用 该 函 数 。 函 数 定 义 是 实 现 函 数 功 能 的 代 码 : 函 数 原型 描 述 了 函 数 的 接 口 : 传 递 给 函 数 的 值 的 数 目 和 种 类 以 及 函 数 的 返 回 类 型 。 函 数 调 用 使 得 程序 将 参 数 传 递 给 函 数 , 并 执 行 函 数 的 代 码 。

在 默 认 情 况 下 , c + + 函 数 按值 传 递 参 数 。 这 意 味 着 函 数 定 义 中 的 形 参 是 新 的 变 量 , 它 们 被 初 始 化 为 函 数 调 用 所 提 供 的 值。 因 此 , c + + 函 数 通 过 使 用 拷 贝 , 保 护 了 原 始 数 据 的 完 整 性 。

c + + 将 数 组 名 参 数 视 为 数 组 第 一 个 元 素 的 地 址 。 从 技 术 上 讲 , 这 仍 然 是 按 值 传 递 的 , 因为 指 针 是 原 始 地 址 的 拷 贝 , 但 函 数 将 使 用 指 针 来 访 问 原 始 数 组 的 内 容 。 当 且 仅 当 声 明 函 数 的形 参 时 , 下 面 两 个 声 明 才 是 等 价 的 ;

typeName arrl[]

typeName *arr[]

这 两 个 声 明 都 表 明 , arr 是 指向 typeName 的 指 针 , 但 在 编 写 函 数 代 码 时 , 可 以 像 使 用 数 组 名 那样 使 用 arr 来 访 问 元 素 : arr。 即 使 在 传 递 指 针 时 , 也 可 以 将 形 参 声 明 为const 指 针 , 来 保 护 原 始 数 据 的 完 整 性 。由 于 传 递 数 据 的 地 址 时 , 并 不 会 传 输 有 关 数组 长 度 的 信 息 , 因 此 通 常 将 数 组 长 度 作 为 独 立 的 参 数 来 传 递 。 另 外 , 也 可 传 递 两 个 指 针 ( 其中 一 个 指 向 数 组 开 头 , 另 一 个 指 向 数 组 末 尾 的 下 一 个 元 素 ) , 以 指 定 一 个 范 围 , 就 像 STL 使 用 的 算 法 一 样 。

c ++提 供 了 3 种 表 示 0 风 格 字符 串 的 方 法 : 字 符 数 组 、 字 符 串 常 量 和 字 符 串 指 针 。 它 们 的 类 型 都 是char* ( ch 指 针 ) , 因 此 被 作 为char * 类 型 参 数 传 递 给 函 数 。 c ++使 用 空 值 字 符 ( \ 0 ) 来 结 束 字 符 串 , 因 此 字 符 串 函 数 检 测 空 值 字 符 来 确 定 字 符 串 的 结尾 。

c + + 还 提 供 了 string 类 , 用 于 表 示 字 符 串 。 函 数 可 以 接 受 string 对 象 作 为 参 数 以 及 将 string 对 象 作为 返 回 值 。 string 类 的 方 法 size( )可 用 于 判 断 其 存 储 的 字 符 串 的 长 度 。

c + + 处 理 结 构 的 方 式 与 基 本 类 型 完 全 相 同 , 这 意 味 着 可 以 按 值 传 递 结 构 , 并 将 其 用 作 函数 返 回 类 型 。 然 而 , 如 果 结 构 非 常 大 , 则 传 递 结 构 指 针 的 效 率 将 更 高 , 同 时 函 数 能 够 使 用 原始 数 据 。 这 些 考 虑 因 素 也 适 用 于 类 对 象 。

c + + 函 数 可 以 是 递 归 的 , 也 就 是 说 , 函 数 代 码 中 可 以 包 括 对 函 数 本 身 的 调 用 。

c ++函 数 名 与 函 数 地 址 的 作 用 相 同 。 通 过 将 函 数 指 针 作 为 参 数 , 可 以 传 递 要 调 用 的 函数 的 名 称 。

猜你喜欢

转载自blog.csdn.net/Hu_yilang/article/details/57928940
今日推荐