设有一个自定义过程声明如下:
procedure pc(a:integer;var b,c:integer);
var d:integer
begin
a:=a+1;
b:=b+2;
d:=a+c;
end;
执行下述程序段:
x:=1;
y:=2;
z:=3;
pc(x,y,z);
问题1:
procedure pc(a:integer;var b,c:integer);
能不能写成:
procedure pc(a,b,c:integer);
如果不能,它们有什么区别?
(2)x,y,z的值是多少,为什么?
procedure pc(a:integer;var b,c:integer);
var d:integer
begin
a:=a+1;
b:=b+2;
d:=a+c;
end;
执行下述程序段:
x:=1;
y:=2;
z:=3;
pc(x,y,z);
问题1:
procedure pc(a:integer;var b,c:integer);
能不能写成:
procedure pc(a,b,c:integer);
如果不能,它们有什么区别?
(2)x,y,z的值是多少,为什么?
1
4
5
你看看书吧
<DELPHI程序设计教程习题及习题解答>刘瑞新 汪远征 李凤华 编著P67
前面的我能看懂,但到这里我看不懂了。
我认为是2,4,3
我一位朋友认为是:1,2,3,
所以只好向大家求助了,请说说结果是怎么得出的。谢谢 再请回答:procedure pc(a:integer;var b,c:integer);
能不能写成:
procedure pc(a,b,c:integer);
不能写成
procedure pc(a,b,c:integer)
因为参数b,c 是变量参数,他可以返回经过PC函数处理后的参数值。
所以你题目的结果是1,4,3 是对的。
procedure pc(a:integer;var b,c:integer);
a参数传值,无法改变实参;b,c传址,可以改变,注意var的用法(传址)procedure pc(a:integer;var b,c:integer);
不能替写成:
procedure pc(a,b,c:integer);
如果这样,pc(x,y,z);
x,y,z值都不会变化
设有一个自定义过程声明如下:
procedure p(x:integer;var y:integer);
begin
x:=x-y;
y:=y+x;
end;
执行下述程序段:
a:=10;b:=4;
p(a,b);
p(a mod b,a);
则a,b的值分别是什么?
我的问题是:
执行p(a,b);后a=10;b=14;对不对?
程序运行到p(a mod b,a);如何执行啊?则a,b的值分别是什么?