储 存 类 别
l l 自 动 变 数 ( auto variable )
l l 自 动 变 数 只 在 它 所 定 义 的 区 块 内 有 效 。 只 要 在 变 数 所 属 的 区 块 结 构 内 执 行 , 该 变 数 的 资 料 是 有 效 而 正 确 的 。 当 程 式 执 行 离 开 了 该 区 块 , 所 有 于 区 块 内 定 义 的 自 动 变 数 就 不 存 在 了 。
l l Example 1:
l l main( ) | l l inner( ) |
l l 静 态 变 数 ( static variable)
静 态 变 数 与 自 动 变 数 一 样 , 是 某 特 定 函 数 内 的 区 域 性 变 数 , 但静 态 变 数 的 值 不 会 因 函 数 的执 行 结 束 而 消 失 。
静 态 变 数 的 宣 告 如 下 所 示 : { | Example 1: main() { increment(); increment(); increment(); }
increment() { int x=0; x=x+1; printf("%d/n",x); } Result = ????? | Example 2: main() { increment(); increment(); increment(); }
increment() { static int x=0; x=x+1; printf("%d/n",x); } Result = ????? |
l l 外 部 变 数 ( extern variable)
外部 变 数 和 前 面 所 提 到 的 变 数 不 同 。 外 部 变 数 的 有 效 范 围 不 是 区 域 性 , 而 是 整 体 性 ( global ) , 外 部 变 数 定 义 在 任 何 函 数 的 外 面 , 表 示 可 以 被 其 他 函 数 所 共 用 。
Example 1: int x=123; main()
Result = ????? | Example 2: int x=123; main() } Result = ????? |
Example 3: #include < stdio.h > int x=123; |
extern.c 内 容 如 下 :
Result = ????? |
/* ======================================== */ /* 程序实例: */ /* 局部(local)和整体(Global) 变量 */ /* ======================================== */ #include <stdio.h>
int step = 10; /* 整体变量宣告 */ int count = 5; /* 整体变量宣告 */
/* ---------------------------------------- */ /* 将变量值加一 */ /* ---------------------------------------- */ void increment() { int step = 0; /* 局部变量 step 宣告 */
step++; /* 局部变量加一 */ count++; /* 整体变量加一 */ printf(" 副程序 %2d %2d /n",step, count); }
/* ---------------------------------------- */ /* 主程序 */ /* ---------------------------------------- */ void main() { int count = 0; /* 局部变量宣告 */
count++; /* 局部变量加一 */ step++; /* 整体变量加一 */ printf(" 程序名 STEP COUNT /n"); increment(); /* 副过程调用 */ printf(" 主程序 %2d %2d /n",step, count); }/* ======================================== */
| |||||||||
执行结果
|