全局变量和局部变量

[复制链接]
发表于 2023-12-22 17:46:49 | 显示全部楼层 |阅读模式
在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。全局变量作用域是整个程序;局部变量作用域是定义该变量的子程序。当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
例4:全局变量和局部变量。
programlocal_global;
var i,k:integer;
procedure sub1;
var i,j:integer;
begin
  i:=17;
  writeln('i in sub=',i);
  writeln('k in sub=',k);
end;
begin
i:=2;k:=9;
writeln('i in main=',i);
writeln('k in sub=',k);
sub1;
writeln('i in main=',i);
writeln('j in main=',j);
readln;
end.
上述程序运行时将出现Unknown Identfier;因为变量j在主程序中没定义。
当删除本语句时。运行结果如下:
i in main=2
k in main=9
i in sub=17
k in sub=9
i in main=2
8. 4 值参和变量参数
值形参——传值:调用时可用表达式代替形参,不该变实在参数的值。
变量形参——传地址:调用时必须用变量代替行参变量,改变实在参数的值。
例4:请看下列程序的运行结果。
program li3_10;
var  a,b,c:integer;
procedure sub(x,y:integer;var z:integer);
begin
x:=x+1;y:=y+1;z:=x+y;
writeln('sub:x=',x:2,'y=',y:2,'z=',z:2);
end;
begin
a:=1;b:=4;c:=9;
writeln('main:a=',a:2,'b=',b:2,'c=',c);
sub(a,b,c);
writeln('main:a=',a:2,'b=',b:2,'c=',c);
sub(c+5,b*b,a);
writeln('main:a=',a:2,'b=',b:2,'c=',c);
readln;
end.
main:a=1 b=4 c=9
sub:x=2 y=5 z=7
main:a=1 b=4 c=7
sub:x=13 y=17 z=30
main:a=30 b=4 c=7

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表