zoukankan      html  css  js  c++  java
  • Delphi 函数参数修饰中的var 、out和const

     

     

    (1)var修饰符

    添加var 是地址传递,会修改原有的变量

    var

    s: string;

    begin

    S := 'Hello';

    ChangeSVar(s);

    ShowMessage(S);

    end;

    // ChangeSVar 定义

    procedure TForm1.ChangeSVar(var A: string);

    begin

    A := A + 'World';

    end;

    以上会输出Hello World,因为是传址,修改的是原来的A

    (2)无任何修饰符

    var

    s: string;

    begin

    S := 'Hello';

    ChangeS(s);

    ShowMessage(S);

    end;

    // ChangeS定义

    procedure TForm1.ChangeS(A: string);

    begin

    A := A + 'World';

    end;

    以上会输出Hello,因为方法ChangeS其实是创建了一个新的A,而输出的还是原来的A,值并没有改变

    (3)out修饰符

    var

    s: string;

    begin

    S := 'Hello';

    ChangeSOut(s);// 此时S的值是'Hello,'而非'Hello,World'!,在过程Hello中的S的原始值被丢弃了

    ShowMessage(S);

    end;

    // ChangeSOut定义

    procedure TForm1.ChangeSOut(out A: string);

    begin

    A := A + 'World';

    end;

    以上会输出World,out仅仅接受返回的值,对out的任何输入都会被忽略。同时out传递给过程的实际参数不必进行初始化,比如对ChangeSOut的调用:

    Var

    Tmp: string;

    Begin

    ChangeSOut(Tmp);//编译也可以通过

    End;

    (4)Const修饰符

    Const修饰的参数传入之后不允许修改

    如果在过程中修改参数会报错,比如:

    Procedure xxxx.TestConst(const A: String);

    Begin

    A := ’ss’; //企图修改const修改的参数,会报错

    End;

  • 相关阅读:
    Luogu 2254 [NOI2005]瑰丽华尔兹
    Luogu 3168 [CQOI2015]任务查询系统
    Luogu U15118 萨塔尼亚的期末考试(fail)
    POJ 2778 DNA Sequence AC自动机 + 矩阵快速幂
    HDU 2457 DNA repair AC自动机 + dp
    POJ 3522 Slim Span 暴力枚举 + 并查集
    POJ 2955 Brackets 区间dp
    hdu 2604 Queuing dp找规律 然后矩阵快速幂。坑!!
    UESTC
    java & SQL
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/4583872.html
Copyright © 2011-2022 走看看