Basic Pascal Tutorial/Chapter 4/Scope/zh CN

From Lazarus wiki
(Redirected from Scope/zh CN)
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

български (bg) English (en) français (fr) 日本語 (ja) 中文(中国大陆)‎ (zh_CN)

4D - 变量作用域 (原作者: Tao Yue, 状态: 未更改)

变量作用域是指变量的使用范围。

全局变量,指在主程序中定义的变量。

它的作用范围:任何子程序可以使用、修改。


过程(函数)中定义的变量如果与全局变量同名,则它是局部变量,即仅在过程(函数)中有效。

这里的要点是:

代码块(过程、函数等等)中,变量作用域是,块内定义,块内可见。
program ScopeDemo;
var A : integer;

  procedure ScopeInner;
  var A : integer;
  begin
    A := 10;
    writeln (A)
  end;

begin (* Main *)
  A := 20;
  writeln (A);
  ScopeInner;
  writeln (A);
end. (* Main *)

程序输出结果是:

20
10
20

原因是:

定义同名变量多次,如,在主程序、子程序都定义的相同名称的变量,它们调用时,都将调用自己的。

这是一个变量作用域图表,通过块缩进可以很清楚看到变量的使用范围。

Scope.gif
  • 所有地方都可以使用全局变量 A, B, C
  • 然而, 在Alpha过程中新定义了变量A,它将取代全局变量A。
  • 过程Beta中定义的变量VCR, Betamax, cassette,在过程Beta1、函数Beta2都可以使用。
  • 过程Beta1不能使用函数Beta2定义的变量FailureToo;同理,函数Beta2也不能使用Beta1过程的Failure变量。
  • 除了Alpha过程可以使用F, G变量,其他地方都不能。
  • 过程Beta可以调用过程Alpha和Beta。
  • 函数Beta2可以调用任何子程序,包括自身(主程序不是一个子程序)
上一页 目录 下一页