pascal过程名后的括号内有var和没有有什么区别

来源:百度知道 编辑:UC知道 时间:2024/05/24 12:43:55
pascal过程名后的括号内有var和没有有什么区别

有var:全局变量,在程序中任何位置均可访问的变量
没有: 局部变量:在程序中,只在特定的过程或函数中可以访问的变量,是相对与全局变量而言的。
全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。
局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量。在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。

全局变量和局部变量

在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。全局变量作用域是整个程序;局部变量作用域是定义该变量的子程序。当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

例4:全局变量和局部变量。

program local_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
<