设有一个自定义过程声明如下:
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.   

    var是形参,返回的直
    1
    4
    5
    你看看书吧
      

  2.   

    但书上的答案是1,4,3
    <DELPHI程序设计教程习题及习题解答>刘瑞新 汪远征 李凤华 编著P67
    前面的我能看懂,但到这里我看不懂了。
    我认为是2,4,3
    我一位朋友认为是:1,2,3,
    所以只好向大家求助了,请说说结果是怎么得出的。谢谢  再请回答:procedure pc(a:integer;var b,c:integer);
    能不能写成:
    procedure pc(a,b,c:integer);
      

  3.   

    <DELPHI程序设计教程习题及习题解答>刘瑞新 汪远征 李凤华 编著P67 机械工业出版社
      

  4.   

    procedure pc(a:integer;var b,c:integer)
    不能写成
    procedure pc(a,b,c:integer)
     因为参数b,c 是变量参数,他可以返回经过PC函数处理后的参数值。
    所以你题目的结果是1,4,3 是对的。
      

  5.   

    没错,答案应该是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值都不会变化
      

  6.   

    并不是每本书都讲的这么详细,不过,我把我手头的参考收都找了一遍,总算找到了,已经理解了这个计算结果.还有一种参数,叫常量参数.几个类似的问题也解决了.但下面这段程序又让我摸不着头脑了.顺便到这里提出,有正确答案后再追加分.
    设有一个自定义过程声明如下:
    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的值分别是什么?