、伺 【人间创新】
浅析 语 言指 针 使 用 中 的几 个 常见 错误
张 尔 谦
(武警 警 官学 院 ,四川 成 都 )
摘要 :指针是 语言 中的一个重要概念 ,也可以说是 语言的灵魂。指针的引入使 语言变得高效和灵活 ,同时也给使用者尤其是初学者带
来 一 定 的 困 惑 。本 文对 语 言 指 针 使 用 中 的 几 个 常见 错 误 进 行 了分 析 。
关键 词 :指 针 ;数 组 :语 言
中 图分 类 号 :
文 献 标 识 码 :
文 章 编 号 : ()一
指 针是 语 言中 的一个 重要概 念 ,也可 以说是 语 言的灵 魂 。 指针 的引入 使 语 言 变得 高 效 和灵 活 ,同 时也 给 使用 者 尤 其是 初 学者带 来一 定 的困惑 。在 教学 实 践 中经 常 会发 现 语 言 指 针使 用 中的一 些常 见 的具有典 型性 的错 误 ,现 列举 分析如 下 。
一 、 间接 引 用 未初 始 化 的指 针
对 于指 针变量 如果 仅进 行 了定 义 而未 对 其 进 行初 始 化 ,则 不 可 对其 进行 间接访 问 。例如 ; ;,这 是初 学 者常 犯 的一个 错误 。对 于指针 变量 进 行 定 义 ,仅 仅是 为 分 配 了一 个 存 储空 间 ,而这个 存储 空 间里 所存 储 的值 在 没有 对 进行 初 始 化 之 前是 不可 预知 的 ,而 这个 不 可 预知 的 值 既然 存 储 在 变量 中就 自然被 理解 为是 一个地 址值 。在这 种情 况下 ,执 行 语句 ; 就会 改 写 以这个存 储 于 中 的不 可预 知 的值 为地 址 的 存储 单 元 里 的内容 ,而该 存储 单元 中可能 存 储着 一 个 重 要 的 数据 ,这 样 就 有 可 能破 坏系 统 的运行 ,造成严 重后 果 。把上述 错误 语句 改 为 ,;; ;由于在对 进 行 间接 引 用之 前 已 对其 进 行初 始 化 ,使 指针 指 向整 型变量 ,则不 会 出现上述 错误 。
二 、不 能 正 确 区别 指 针 变 量 与 数 组 名 的 使 用 方 法 指针 变量 是用 来存 放地 址 值 的 ,而 数组 名 代 表该 数 组 第 一 个
元素 的地 址 。例 如 : , ,,,,;其 中 的值 即为 数 组
中第 一个 元素 的地 址 即 ,可 以将 指针 初始 化 为 (即 ;等 价 于 ;),这 样指针 就 指 向数组 的第 一个 元 素 。但 是必 须 注意 是 可 以存放 地址值 的变 量而 则 是一 个 地址 常量 。请看 下 例 :
() , ,,,,; (;; ) (” ”, ¥ ( ));
;
该程 序段不 能 输 出数组 的元 素 的值 ,编 译 时会 给 出 出错 提 示 “ ” (自增 运算 符 只 能应 用 于左 值 )原 因 在 于 是 一个 常量 ,而常 量 不 能 作 为左 值 ,即不 能 出现 在 赋 值 符 的 左侧 ,不能 进行 自增 运算 。这是 数组 名与 指针变 量 的重要 区别 。
将上述错误程序改写如下 ,则能正确输 出数组 的各个元 素的值 :
() ,, ,,,,;
:
( ;; ) (” ”, ());
;
三 、不能正确 区别 字符指针变量与字符数 组的使用方法
字符指 针变 量用 来指 向 一个